C#での非同期メソッドの実装方法は何ですか?
日本語で表現すると、C#で非同期呼び出しを実現する方法はいくつかあります。
- asyncとawaitキーワードを使用する:メソッドの前にasyncキーワードを追加し、非同期で実行する必要があるメソッド内でawaitキーワードを使用して非同期操作の完了を待ちます。例:
public async Task<string> GetResultAsync()
{
// 异步操作
await Task.Delay(1000);
return "异步调用完成";
}
- Task.Runメソッドを使用すると、新しいスレッドでメソッドを実行し、Taskオブジェクトを返すことができます。非同期メソッドの戻り値を取得するには、Task.Resultを使用できます。例えば、
public static async Task<string> GetResultAsync()
{
return await Task.Run(() =>
{
// 异步操作
Thread.Sleep(1000);
return "异步调用完成";
});
}
- DelegateとBeginInvokeメソッドを使用すると、メソッドを非同期で呼び出し、EndInvokeメソッドを使用してメソッドの戻り値を取得することができます。例:
public delegate string MyDelegate();
public static string GetResult()
{
// 同步操作
Thread.Sleep(1000);
return "异步调用完成";
}
public static void AsyncCallback(IAsyncResult ar)
{
MyDelegate del = (MyDelegate)((AsyncResult)ar).AsyncDelegate;
string result = del.EndInvoke(ar);
Console.WriteLine(result);
}
public static void Main(string[] args)
{
MyDelegate del = new MyDelegate(GetResult);
del.BeginInvoke(new AsyncCallback(AsyncCallback), del);
// 等待异步调用完成
Console.ReadLine();
}
これらは一般的な非同期呼び出しの方法のいくつかです。具体的な要件に応じて適切な方法を選択できます。