1
我已經寫了一小段代碼來將Action
分配給BackGroundWorker
作爲Delegate。
將一個System.Action分配給一個BackgroundWorker
public BackgroundWorker GetBackgroundWorker(System.Action doWork)
{
BackgroundWorker bwk= new BackgroundWorker();
bwk.DoWork += (sender, args) => { args.Result = doWork; };
return bwk;
}
BackgroundWorker wk = GetBackgroundWorker(MY_Delegate);
wk.RunWorkerAsync();
public void MY_Delegate()
{
//DO Stuff
}
爲了使長話短說,我很奇怪,爲什麼在我火與RunWorkerAsync
呼叫的工人從來沒有進入方法MY_Delegate
。
也許我的「=>」我的assignement語法很糟糕。
反正,我歡迎任何有效的方法來完成這項工作
謝謝!我一直在弄這個bug一個小時:-)這是一個奇特的語法,我不習慣它。我嘗試修改一個基於模板的代碼:'args.Result =(K)doWork((T)args.Argument);'實際上'args.Result = doWork();'可以工作,但在這種情況下,一個void委託,所以這裏沒有用處。再次感謝 ! – 2011-12-29 10:35:02
關於旁註,如果我真的明白了,我不會問(愚蠢的)問題:-P更嚴重:這不是我的「真實」代碼,我只是試着寫一個最小樣本來重現我所面臨的問題。我試圖從一個漂亮的博客條目中爲代碼添加一個「void」委託功能:http://pooyakhamooshi.blogspot.com/2009/11/create-thread-safe-queued.html – 2011-12-29 15:56:21