多次启动线程
Posted
技术标签:
【中文标题】多次启动线程【英文标题】:Start Thread multiple times 【发布时间】:2021-11-29 13:47:06 【问题描述】:我想使用线程将文件上传到服务器。
只要ThreadState
是Unstarted
,我就可以用ThreadName.Start()
来启动线程。
代码完成后,ThreadState
将获得 Stopped
。
如何重新启动该线程?
我的帖子是这样的:
public static Thread ThreadUploadFile = new Thread(() =>
// Upload file
);
我通过以下方式调用线程:
private void UploadFile()
ThreadUploadFile.Start();
);
【问题讨论】:
附带说明,任务比线程更方便。var task = Task.Run(() => /* Upload file */ );
也有可能,你根本不需要启动线程。这取决于您如何上传文件。也许有一些使用的类的异步方法。您上传的内容如何?
【参考方案1】:
你不能。
一旦线程停止,它就永远不能离开那个状态。 您必须初始化一个新实例并运行该新实例。
看 https://docs.microsoft.com/en-us/dotnet/api/system.threading.threadstate?redirectedfrom=MSDN&view=net-5.0
我也找到了这张图片(我不确定它是否仍然 100% 正确)。
【讨论】:
线程池也可以用于类似目的 使用将使用线程池的任务【参考方案2】:一旦线程停止,您将无法再次启动线程。 我建议将你的匿名方法变成一个真正的方法,并在每次开始之前创建一个新的线程。
【讨论】:
以上是关于多次启动线程的主要内容,如果未能解决你的问题,请参考以下文章