我的代码中的任务(t
)不能在我的代码中直接在我的代码中使用。我得到以下错误:动作委托内的任务实例
代码:
Task t = Task.Factory.StartNew(() =>
{
MessageBox.Show(t.Id.ToString());
});
现在,如果我做了以下工作:
Task t = null;
t = Task.Factory.StartNew(() =>
{
MessageBox.Show(t.Id.ToString());
});
可能有人请解释为什么是这样的话?
这两个片段(在问题中)具有相同的竞争条件。但编译器不知道,错误来自静态分析。 – 2012-07-26 11:22:59
@HenkHolterman是的,它仍然存在。这个想法是为了使比赛条件更加明显。 – dasblinkenlight 2012-07-26 11:23:29
很好的解释,谢谢。那么,在代理中访问我的任务实例有没有安全的方法? – davenewza 2012-07-26 11:24:38