Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在线程中运行参数化方法_C#_Multithreading_Parameters - Fatal编程技术网

C# 在线程中运行参数化方法

C# 在线程中运行参数化方法,c#,multithreading,parameters,C#,Multithreading,Parameters,我目前正在从事一个c#项目,我需要一个方法,该方法有1个参数作为线程运行 例如 如何从另一个方法调用上面的方法,但在线程中运行 谢谢你能提供的帮助 最简单的方法通常是使用匿名方法或lambda表达式: new Thread(o => myMethod((string)o)).Start(param); string path = ...; Thread thread = new Thread(() => MyMethod(path)); thread.Start(); 您可以使

我目前正在从事一个c#项目,我需要一个方法,该方法有1个参数作为线程运行

例如

如何从另一个方法调用上面的方法,但在线程中运行


谢谢你能提供的帮助

最简单的方法通常是使用匿名方法或lambda表达式:

new Thread(o => myMethod((string)o)).Start(param);
string path = ...;

Thread thread = new Thread(() => MyMethod(path));
thread.Start();
您可以使用
参数化线程启动
,但我通常不会

请注意,如果在循环中进行,则需要注意正常危险:


最简单的方法通常是使用匿名方法或lambda表达式:

string path = ...;

Thread thread = new Thread(() => MyMethod(path));
thread.Start();
您可以使用
参数化线程启动
,但我通常不会

请注意,如果在循环中进行,则需要注意正常危险:


只需将该方法调用封装在一个不带参数的方法中,但该方法使用正确的参数调用您的方法

public void myWrappingMethod()
{
    myMethod(this.Path);
}

public void myMethod(string path)
{
    // ...
}

或者,如果您有可用的lambda,只需使用其中一个(根据Jon Skeet的回答)。

只需将该方法调用封装在一个不带参数的方法中,但该方法使用正确的参数调用您的方法

public void myWrappingMethod()
{
    myMethod(this.Path);
}

public void myMethod(string path)
{
    // ...
}

或者,如果您有lambda,只需使用其中一个(根据Jon Skeet的回答)。

谢谢,效果很好。使用谷歌很难找到这个问题的答案,这比我在谷歌上找到的似乎不太好的答案要简单得多,感谢阿加因汉克斯的工作非常出色。使用谷歌很难找到这个问题的答案,这比我在谷歌上找到的似乎不太好的答案要简单得多,再次感谢