我有此功能
static void appUpdater(string appName, string proccessName)
{
/**/
}
我需要为每个应用程序更新创建一个线程,但是ThreadStart和ParameterizedThreadStart不匹配委托
Thread wms = new Thread(new ParameterizedThreadStart(appUpdater));
wms.Start("WMS","StuMenu");
答案 0 :(得分:1)
您可以通过执行以下操作使其变得超级简单:
Thread wms = new Thread(() => appUpdater("WMS", "StuMenu"));
wms.Start();
或者,使用Task
-任务更加现代,您会发现内置的语言支持可帮助您执行巧妙的操作。不学习线程,不学习任务。
Task t = Task.Run(() => appUpdater("WMS", "StuMenu"));
答案 1 :(得分:0)
不能。 Thread.Start()
仅接受类型为object
的一个参数。但是,例如,您可以改为传递自定义对象或字典
对象:
class ThreadParameters {
public string p1 {get;set;}
public string p2 {get;set;}
}
static void appUpdater(object p) {
ThreadParameters tp = p as ThreadParameters;
}
Thread wms = new Thread(new ParameterizedThreadStart(appUpdater));
wms.Start(new ThreadParameters{p1="p1", p2= "p2"});
词典:
static void appUpdater(object p) {
Dictionary<string, object> tp = p as Dictionary<string, object>;
}
Thread wms = new Thread(new ParameterizedThreadStart(appUpdater));
wms.Start(new Dictionary<string, object>{{"p1", "p1"}, {"p2", "p2}});
但是根据您的需求,最好使用Task
。