Articles of multithreading

É possível aguardar uma operação de E / S que não seja declarada como assíncrona? Se não, o que devo fazer?

Eu sou novo em programação assíncrona em c # e ainda estou confuso sobre algumas coisas. Eu li que depois do .NET 4.5, o APM e o EAP não são mais recomendados para novos desenvolvimentos, já que o TAP deve substituí-los ( fonte ). Eu acho que entendi como o async / await funciona e […]

A function1 e a function2 usam minha class de porta serial de maneira segura?

Eu tenho uma class wrapper em torno da porta serial que é algo como isto: static class HASPCLass { private static SerialPort m_port; private static bool m_initialized; private static int m_baudRate; static readonly object _syncObject = new object(); public DoInitialization(int baudRate /*also could be other params*/) { lock(_syncObject) { if (!m_initialized) { Initialize(baudRate); } } […]

System.Reflection.MethodInfo.Invoke e vários encadeamentos

Oi como faço para chamar System.Reflection.MethodInfo.Invoke () com parâmetros com threads. Por exemplo.. Digamos que eu tenho um método que permite que você passe em uma string que representa um nome de class e chama o método de class correspondente dinamicamente, agora eu quero chamar este Methodinfo.invoke com threads, não tenho idéia de como fazer […]

Como usar a tarefa levantando um evento e aguardando o término do evento

Eu tenho o seguinte cenário: Cliente que está solicitando um serviço da Web para iniciar public bool Start(MyProject project, string error) Um serviço da web que recebe a chamada do cliente em um método public event EventHandler startEvent; public bool Start(MyProject project, string error) { Task result = StartAsync(project, error); return result.Result; } protected virtual […]

Como executar código no thread da GUI?

Eu tenho um FileSystemWatcher que reagem no evento Changed. Eu quero abrir o arquivo, ler seu conteúdo exibi-lo em uma checkbox de texto e ocultar o pop-up que foi criado após 1 segundo. O código quase funciona, mas algo falha ao esconder o popup. Aqui está um trecho do código: txtLog.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate() { this.txtLog.Text = […]

C # uma vez que o thread principal dorme, todo o segmento parou

Eu tenho uma class executando o modelo produtor-consumidor como este: public class SyncEvents { public bool waiting; public SyncEvents() { waiting = true; } } public class Producer { private readonly Queue _queue; private SyncEvents _sync; private Object _waitAck; public Producer(Queue q, SyncEvents sync, Object obj) { _queue = q; _sync = sync; _waitAck = […]

Por que Thread.Join () travar mesmo que os methods no segmento retornaram?

Eu tenho um aplicativo WPF que usa algum código de biblioteca para autenticação que precisa ser executado em um thread de Single-Thread Apartment. Minha abordagem é gerar um thread separado para obter o object de autenticação, bloquear até que o thread retorne e continue a execução. No entanto, em alguns casos, meu aplicativo trava em […]

Segmento de segurança de inicializadores estáticos em c #

Todo mundo diz que inicializadores estáticos são thread-safe, mas estou preocupado com um detalhe em particular. Vamos dizer que eu tenho static class MyStaticClass { public static readonly object myField = MyOtherClass.GetNewObject(); } static class MyOtherClass { public static object GetNewObject() { /* arbitrary code that returns a new object */ } } Qual das […]

Qual é o tamanho do thread do BackgroundWorker quando o aplicativo é desativado?

Eu crio thread com BackgroundWorker , e no loop eu verifico toda vez se CancellationPending é true ou não, assim: public MainPage() { InitializeComponent(); bw = new BackgroundWorker(); bw.WorkerReportsProgress = true; bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(bw_DoWork); bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); } private void ButtonStart_Click(object sender, RoutedEventArgs e) { if […]

Entendendo a synchronization de encadeamento sem bloqueio e Thread.MemoryBarrier

Neste livro on-line de segmentação: http://www.albahari.com/threading/part4.aspx há um exemplo de Thread.MemoryBarrier() class Foo { int _answer; bool _complete; void A() { _answer = 123; Thread.MemoryBarrier(); // Barrier 1 _complete = true; Thread.MemoryBarrier(); // Barrier 2 } void B() { Thread.MemoryBarrier(); // Barrier 3 if (_complete) { Thread.MemoryBarrier(); // Barrier 4 Console.WriteLine (_answer); } } } […]