我有问题。我有以下代码。在第二行,我启动一个工作正常的线程但我的问题是在线程启动之前CloseQueueClient
关闭。线程完成后是否可以运行CloseQueueClient(queueClient);
?我试着等待然后它工作但整个Gui线程被阻止而Gui不会更新。
QueueClient queueClient = CreateQueueClient(queueName);
Task task = Task.Factory.StartNew(() => ReceiveMessagesFromQueue(queueClient));
CloseQueueClient(queueClient);
答案 0 :(得分:3)
您需要的可能是延续:
QueueClient queueClient = CreateQueueClient(queueName);
Task task = Task.Factory
.StartNew(() => ReceiveMessagesFromQueue(queueClient))
.ContinueWith(t => CloseQueueClient(queueClient));
上面的代码在任何线程上执行continuation。如果您需要使用UI线程,请使用FromCurrentSynchronizationContext
:
TaskScheduler
task.ContinueWith(t => CloseQueueClient(queueClient),
TaskScheduler.FromCurrentSynchronizationContext());
答案 1 :(得分:1)
尝试这样做:
QueueClient queueClient = CreateQueueClient(queueName);
Task task = Task.Factory.StartNew(() =>
{
ReceiveMessagesFromQueue(queueClient);
CloseQueueClient(queueClient);
});