Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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 - Fatal编程技术网

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
都将在同一线程上依次运行。