在C#中,Invoke
和BeginInvoke
都是用來在多線程中執(zhí)行一個委托(delegate)的方法。
Invoke
方法是同步執(zhí)行委托的方法,會阻塞當前線程直到委托執(zhí)行完成。使用方式如下:
// 假設有一個委托類型為Action的變量 action
action.Invoke();
BeginInvoke
方法是異步執(zhí)行委托的方法,會在另一個線程中執(zhí)行委托。使用方式如下:
// 假設有一個委托類型為Action的變量 action
action.BeginInvoke(null, null);
在BeginInvoke
方法中,第一個參數是一個AsyncCallback
類型的回調函數,用來在委托執(zhí)行完成后執(zhí)行一些操作;第二個參數是一個對象,用來傳遞給委托的參數。
需要注意的是,在BeginInvoke
方法中傳遞的參數需要是object
類型的,如果需要傳遞多個參數,可以使用Tuple
或者自定義一個類來封裝參數。