C# 如何删除独立工作线程函数并创建线程
这是传统的线程创建代码:C# 如何删除独立工作线程函数并创建线程,c#,multithreading,C#,Multithreading,这是传统的线程创建代码: public static void Ping() { new Thread(workThreadPingRequest) { IsBackground = true }.Start(); } private static void workThreadPingRequest() { line1(); //Create connection
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();
}
公共静态无效Ping()
{
新线程(新函数fn=()=>
{line1();line2();line3();})
{IsBackground=true}
.Start();
}
或者可能吗?您尝试过使用.NET 4吗
你试过使用.NET4吗
@Cameron的回答似乎是一个很好的主意,但如果你在.net 3.5上,你可以使用threadpool:
System.Threading.ThreadPool.QueueUserWorkItem(_ =>
{
line1();
line2();
line3();
});
此外,如果您确实想创建一个新线程,您可以执行以下操作:
new Thread(() =>
{
line1();
line2();
line3();
}) { IsBackground = true }.Start();
@Cameron的回答似乎是一个很好的主意,但如果你在.net 3.5上,你可以使用threadpool:
System.Threading.ThreadPool.QueueUserWorkItem(_ =>
{
line1();
line2();
line3();
});
此外,如果您确实想创建一个新线程,您可以执行以下操作:
new Thread(() =>
{
line1();
line2();
line3();
}) { IsBackground = true }.Start();
听起来你只是对语法增强感兴趣?后台工作人员非常方便
string arg = "blah...";
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (s,e) =>
{
// can extract args from e
// code here
};
worker.RunAsync(args);
这段代码不在我的脑海中,所以可能并不完美,但想法就在那里。听起来你只是对语法增强感兴趣?后台工作人员非常方便
string arg = "blah...";
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (s,e) =>
{
// can extract args from e
// code here
};
worker.RunAsync(args);
这段代码我想都想不起来了,所以它可能并不完美,但想法就在那里。2nd是我问题的答案。所有的片段都是令人敬畏的。2是我问题的答案。所有的代码片段都很可怕。行是同步的,不是吗?@Nime:我不知道你的意思。匿名函数(
()=>{}
)将同步运行,但在单独的线程上运行。所以line1
、line2
和line3
都会在同一个线程上一个接一个地运行。行是同步的,不是吗?@Nime:我不知道你的意思。匿名函数(()=>{}
)将同步运行,但在单独的线程上运行。因此,line1
、line2
和line3
都将在同一线程上依次运行。