这是传统的线程创建代码:
public static void Ping()
{
new Thread(workThreadPingRequest) { IsBackground = true }.Start();
}
private static void workThreadPingRequest()
{
line1(); //Create connection
line2(); //Ask ping
line3(); //Process the reply and close connection
}
我有很多像他们一样的人。那么我如何删除单独的工作线程函数以使代码更容易 - 对我来说 - 如下所示:
public static void Ping()
{
new Thread(new Func<void> fn = () =>
{ line1(); line2(); line3();})
{ IsBackground = true }
.Start();
}
或者可能吗?
答案 0 :(得分:1)
您是否尝试过使用.NET 4的Tasks?
Task.Factory.StartNew(() => {
line1();
line2();
line3();
});
答案 1 :(得分:1)
@Cameron的回答似乎是一个很好的主意但如果在.net 3.5上你可以使用线程池代替:
System.Threading.ThreadPool.QueueUserWorkItem(_ =>
{
line1();
line2();
line3();
});
另外,如果你真的想要创建一个新线程,你可以这样做:
new Thread(() =>
{
line1();
line2();
line3();
}) { IsBackground = true }.Start();
答案 2 :(得分:1)
听起来你只对语法增强感兴趣? BackgroundWorker非常友好。
string arg = "blah...";
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (s,e) =>
{
// can extract args from e
// code here
};
worker.RunAsync(args);
这段代码不在我的脑海中,所以它可能并不完美,但这个想法就在那里。