1
public partial class JobDataDuplicatorForm : Form
{
public JobDataDuplicatorForm(IJobDataDuplicatorEngine engine)
{
_engine.CopyStartedEvent += GetEventHandler(OnCopyStarted);
_engine.CopyEndedEvent += GetEventHandler(OnCopyEnded);
...
}
private static EventHandler GetEventHandler(Action action)
{
return (sender, args) => action();
}
private void OnCopyStarted()
{
copyStatus.Text = "Copy progress: ";
generateButton.Enabled = false; // Cross-thread operation not valid
}
}
我有以下異常:如何創建線程安全GetEventHandler()?
Additional information: Cross-thread operation not valid: Control
'generateButton' accessed from a thread other than the thread it was created on.
我可以修復通過改變GetEventHandler()
,而不是在不同的地方包裹每個按鈕像這樣
Invoke((MethodInvoker)delegate { generateButton.Enabled = false; });
例外呢?
我該怎麼做?
你有沒有機會最初從後臺線程調用'JobDataDuplicatorForm(IJobDataDuplicatorEngine引擎)'? –
更新,看起來像我總是執行舊版本。但是怎麼樣? – Anatoly
你只是想啓用和禁用按鈕? – Sorceri