我想使用全球聲明的代表in this SO question and subsequent answers訂閱和取消訂閱ToolStripButton
的Click
事件。我有以下的代表在我班上全局聲明多播代表訂閱/取消訂閱按鈕單擊事件
private delegate void StopTask(ref MainForm _mainForm,
Task _task, CancellationTokenSource _cancelSource);
我然後設置這個委託如下
StopTask cancelTask = UtilsTPL.CancelRunningProcess;
舉行方法,其中公共類UtilsTPL
,CancelRunningProcess
被定義爲
public static void CancelRunningProcess(ref MainForm _mainForm, Task _task,
CancellationTokenSource _cancelSource)
{
// Some really amazing code...
}
然後我嘗試將代理添加到我的ToolStripButton
這樣的點擊事件(並且如圖所示取消訂閱)
mainForm.stopButton.Click += cancelTask;
mainForm.stopButton.Click -= cancelTask;
這顯然不起作用,因爲有明顯的類型錯過匹配。
如何訂閱/取消訂閱一致性委託cancelTask
到按鈕點擊事件?謝謝你的時間。
注意:我這樣做是爲了使按鈕可以重複使用,以取消許多不同的Task
s。
事件綁定到特定類型的委託:在'Click'的情況下,它是一個基本的'EventHandler',即一個'Action