阻止任务?

时间:2011-12-09 11:03:29

标签: c# .net parallel-processing task async-ctp

我尝试在我的应用程序中使用这样的任务:

Task test;
test = Task.Factory.StartNew(() => general.Login(loginName, password));
MyTextBox.Text = "test text";

这将是进行此调用的UI线程,我需要阻止它直到工作线程从服务返回,但我不希望UI冻结。

我可以使用ContinueWith,但这会分裂我的登录方法,这使得它更难以遵循。我还需要主UI线程来运行此方法中的其余代码。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:8)

这正是C#5中异步解决的问题。目前,您基本上必须拆分代码。这是一种痛苦,但事实就是如此。 (顺便说一句,你的描述稍微偏离了 - 你想要阻止UI线程......你想要“不执行逻辑的第二部分”,直到工作线程返回。不完全相同:)(您可能还想禁用UI的其他部分,但我们无法确定。)

值得深入了解异步功能 - 请参阅Visual Studio async home page了解大量资源。

答案 1 :(得分:0)

没有阻止等待线程就无法等待线程。你可以做的是:

fire task
do some other task
wait for task  // hopefully the task finished by now