gpt4 book ai didi

C# - 从工作线程而不是主线程访问时,类字段为空

转载 作者:行者123 更新时间:2023-11-30 19:50:14 24 4
gpt4 key购买 nike

不确定我做错了什么:

class MyClass
{

private EventInfo eventInfo;

public void OnGenerateEvent(object sender, EventArgs e)
{
// Called from *main* thread

// Load assembly and set eventInfo here
eventInfo = ....GetEvent(...);
eventInfo.AddEventHandler(source, handler);

// Call to a static method in another assembly
someMethodInfo.Invoke(null, null);

}


public void OnEventChanged(object sender, EventArgs args)
{
// Called from a *worker* thread created
// by that static method in the other assembly

eventInfo is null here !

// Trying to remove handler
eventInfo.RemoveEventHandler(.....);

}


// But...
protected override void Dispose(bool disposing)
{
// Called from *main* thread when program closes

eventInfo is *not* null here
}
}

最佳答案

我认为我们需要看到可重现的代码,但我可以看到 4 种情况:

  • 在这两种情况下,您正在与不同的 MyClass 实例对话 - 我敢打赌
  • 您在其中一种方法中有一个名为 eventInfo 的变量(如果有任何歧义,请尝试使用 this.eventInfo 表示字段)
  • 写入或读取被缓存(尝试将字段标记为volatile;再次不太可能)
  • 特定于线程的字段(线程本地存储)——不太可能

前两个更有可能。

关于C# - 从工作线程而不是主线程访问时,类字段为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2555600/

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