ThreadStart 是無參無回傳的委派型別:
var thread = new Thread(new ThreadStart(DoWork));
// 或簡寫
var thread = new Thread(DoWork);
void DoWork() { /* 執行緒邏輯 */ }
委派提供 BeginInvoke/EndInvoke 支援非同步呼叫:
public delegate void MyDelegate(int source);
MyDelegate del = ProcessData;
del.BeginInvoke(42, ar =>
{
try
{
del.EndInvoke(ar);
Console.WriteLine("非同步完成");
}
catch (Exception ex)
{
Console.WriteLine($"錯誤:{ex.Message}");
}
}, null);
void ProcessData(int src) { /* 耗時運算 */ }
注意:現代 C# 應優先使用 async/await + Task,APM 已不推薦新專案使用。
+=/-= 組合多個目標方法
Action chain = null;
chain += x => Console.WriteLine($"A: {x}");
chain += x => Console.WriteLine($"B: {x}");
chain(10); // 依序執行 A、B
chain -= x => Console.WriteLine($"A: {x}"); // 移除
chain(20); // 僅執行 B
Func<T, TResult>、Action<T>、Predicate<T> 內建委派event 關鍵字,防止外部直接呼叫/清空委派鏈Task、ValueTask、IAsyncEnumerable