smw*_*dia 1 .net multithreading delegates
以下代码很常见:
Work w = new Work();
w.Data = 42;
threadDelegate = new ThreadStart(w.DoMoreWork);
newThread = new Thread(threadDelegate);
newThread.Start();
Run Code Online (Sandbox Code Playgroud)
我只是想知道,为什么必须有一个委托桥接线程和方法在该线程上执行?
我们可以直接将方法名称发送给Thread吗?
我们可以直接将方法名称发送给Thread吗?
作为一个字符串?EWWW.如果不是字符串,你会如何建议告诉线程执行什么?委托是在.NET中表示"使用特定签名执行某些内容" 的惯用方法.
请注意,您不需要使用new ThreadStart或使用单独的变量.这可以使用方法组转换正常工作:
newThread = new Thread(w.DoMoreWork);
newThread.Start();
Run Code Online (Sandbox Code Playgroud)
或者,如果您不需要所有这些变量:
new Thread(new Work { Data = 42 }.DoWork).Start();
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,从.NET 4开始,使用任务并行库通常更好的做法.
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |