【发布时间】:2013-06-26 00:55:05
【问题描述】:
我遇到了无法解决的“调用”问题。我会尽可能详细地描述我的描述,但我是新手,所以请耐心等待,如果您需要更多信息,请告诉我。
我有一个后台线程正在运行,当出现提示时,它将禁用在主线程上创建的表单上的一堆复选框。为了做到这一点,我需要使用invoke 和委托安全地跨线程,但我必须做错了。最重要的是,当我在调试器中检查它时,我发现如果InvokeRequired,它会通过代码的 ACTION 部分运行两次。我可以通过用else 将ACTION 括起来来解决这个问题,虽然它不会通过else 两次,但它仍然会尝试再次通过该方法。
delegate void ManualCurtainShuttoffHandler();
public void ManualCurtainShutoff()
{
if (InvokeRequired)
{
Invoke(new ManualCurtainShuttoffHandler(ManualCurtainShutoff));
}
// ACTION: Disable check boxes
}
我只是想知道为什么它会两次运行该方法。如果您需要更多信息,请告诉我,我很乐意与您分享。
【问题讨论】:
标签: c# multithreading invoke invokerequired