gpt4 book ai didi

C#线程在运行时重新初始化

转载 作者:行者123 更新时间:2023-11-30 16:10:37 26 4
gpt4 key购买 nike

我已经全局声明了一个线程

私有(private)线程 _ftpthread ;

该线程用于上传图片到ftp

在我的函数中我用过

 private void uploadImage()
{

...
...
_ftpthread = new Thread(() => sendThumbsToFTP(path,image));
_ftpthread.Start();

_ftpthread = new Thread(() => sendThumbsToFTP(path2,image2));
_ftpthread.Start();
...
...
}

我的问题是我可以像这样初始化线程吗?第一个线程是否会在重新初始化时终止?还是两者都会被执行?

最佳答案

回答您的问题:

  • 我可以像这样初始化线程吗?

    当然可以,为什么不呢?

  • 第一个线程是否会在重新初始化时终止?还是两者都会被执行?

    两者都会被执行,第一个线程会简单地运行完成。


_ftpthread 字段只是对已创建线程的引用,不应该有任何隐藏的语义来覆盖引用 - 除了失去引用它的能力。因此,您的代码几乎* 等同于:

private Thread _ftpthread;

private void uploadImage()
{
//...
new Thread(() => sendThumbsToFTP(path,image)).Start();

_ftpthread = new Thread(() => sendThumbsToFTP(path2,image2));
_ftpthread.Start();

//...
}

*我说几乎是因为在多线程环境中,另一个线程有可能在原始代码中的两个赋值之间访问 _ftpthread 并获取对第一个线程创建。但是,如果没有其他线程访问 _ftpthread,则代码片段是等效的。

关于C#线程在运行时重新初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25498379/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com