1
Action
を代理人としてBackGroundWorker
に割り当てるための小さなコードを書きました。
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
が入力されることはありません、なぜ、私は疑問に思って。
多分私の割り当て構文 "=>"は吸う。
はとにかく、私はこの仕事が
ありがとうございました!私はこのバグを1時間ぐちゃぐちゃしていました:-)これは私がそれに慣れていない独特の構文です。 'args.Result =(K)doWork((T)args.Argument);'実際には 'args.Result = doWork();'は動作しますが、この場合は、ボイドデリゲートなのでここでは使用しません。再度、感謝します ! –
サイドノートについて、私が本当に理解していれば、私は(愚かな)質問をしません:-Pもっと真剣に:これは私の "本当の"コードではありませんでした私は直面していた問題を再現するために最小サンプルを書こうとしました。私は素晴らしいコードエントリーからこのコードに "void"デリゲート機能を追加しようとしていました:http://pooyakhamooshi.blogspot.com/2009/11/create-thread-safe-queued.html –