gpt4 book ai didi

c# - 在构造期间,将其传递给 RunWorkerAsync

转载 作者:太空宇宙 更新时间:2023-11-03 10:37:16 27 4
gpt4 key购买 nike

我有这个代码

public class MyClass
{
BackgroundWorker worker;
/* ... */
public MyClass()
{
worker = new BackgroundWorker();
worker.DoWork += DoWhatever;
worker.RunWorkerAsync(this);
/* Some other code */
}
internal static void DoWhatever(object sender, DoWorkEventArgs e)
{
MyClass thingy = (MyClass)e.Argument;
/* ... */
}
}

我将自己的实例发送给工作人员。这会不会导致任何类型的线程问题,或者 DoWhatever 中的代码将等待实例完全实例化?

编辑:正如已接受答案的评论所阐明的那样,可能会出现竞争条件。这本身不是线程安全的,但如果 RunWorkerAsync 是最后一条指令,那么构造函数是线程安全的

最佳答案

传递对象引用本身是安全的。但实际上当 DoWhatever 开始时构造函数可能不会完成。没有任何机制可以神奇地等待构造函数完成,直到其他一些不相关的方法可以启动。 BackgroundWorker 与调用它的任何代码都没有关联。即使它想查也查不到。

关于c# - 在构造期间,将其传递给 RunWorkerAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27205643/

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