我正在使用这样的构造:

string myurl = "http://google.de";
Task.Factory.StartNew(() =>
{
   MessageBox.Show(url);
});


如何将myurl传递给匿名函数?

最佳答案

只需直接使用它:

string myurl = "http://google.de";
Task.Factory.StartNew(() =>
{
   MessageBox.Show(myurl);
});


这称为“关闭”。

如果您不想这样做,则可以将url作为另一个参数传递给StartNew

string myurl = "http://google.de";
Task.Factory.StartNew(url =>
{
   MessageBox.Show((string)url);
}, myurl);


第二个版本是更多代码,它将您限制为仅一个参数(因此,如果您有多个参数,则需要使用闭包或将所有参数放入某个容器对象中),并将该参数键入object,从而迫使您将其强制转换为方法主体中的实际内容。另一方面,优点是与关闭变量相关的开销很小,您可以避免使用此方法。请注意,在大多数情况下,这不会成为重要的性能问题,因此,除非有其他理由,否则应该选择最方便的选择。

关于c# - 如何将值传递给Task.Factory中的匿名方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16363971/

10-11 06:17