【问题标题】:Start Thread multiple times多次启动线程
【发布时间】:2021-11-29 13:47:06
【问题描述】:

我想使用线程将文件上传到服务器。

只要ThreadStateUnstarted,我就可以用ThreadName.Start()来启动线程。 代码完成后,ThreadState 将获得 Stopped。 如何重新启动该线程?

我的帖子是这样的:

public static Thread ThreadUploadFile = new Thread(() =>
{
    // Upload file
});

我通过以下方式调用线程:

private void UploadFile()
{
    ThreadUploadFile.Start();
});

【问题讨论】:

  • 附带说明,任务比线程更方便。 var task = Task.Run(() => { /* Upload file */ });
  • 也有可能,你根本不需要启动线程。这取决于您如何上传文件。也许有一些使用的类的异步方法。您上传的内容如何?

标签: c# multithreading


【解决方案1】:

你不能。

一旦线程停止,它就永远不能离开那个状态。 您必须初始化一个新实例并运行该新实例。

https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadstate?redirectedfrom=MSDN&view=net-5.0

我也找到了这张图片(我不确定它是否仍然 100% 正确)。

【讨论】:

  • 线程池也可以用于类似目的
  • 使用将使用线程池的任务
【解决方案2】:

一旦线程停止,您将无法再次启动线程。 我建议将你的匿名方法变成一个真正的方法,并在每次开始之前创建一个新的线程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多