- タスクの使用: C#では、System.Threading.Tasks.Taskクラスを使用して非同期処理を実現できます。タスクを使用すると、GUIスレッドをブロックせずに処理を待機できます。次のコード例を参考にしてください。
using System;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
Console.WriteLine("処理を開始します");
await Task.Delay(5000); // 5秒待機する非同期処理
Console.WriteLine("処理が完了しました");
}
}
上記の例では、Task.Delay
メソッドを使用して5秒間待機しています。await
キーワードを使用して非同期に待機することで、GUIスレッドがブロックされずに処理が進行します。
- コールバックを使用: C#では、コールバックを使用して非同期処理を実現することもできます。コールバックを使用すると、待機中に他の処理を実行できます。以下に簡単な例を示します。
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("処理を開始します");
Delay(5000, () =>
{
Console.WriteLine("処理が完了しました");
});
// 他の処理を実行する
}
public static void Delay(int milliseconds, Action callback)
{
System.Threading.Timer timer = null;
timer = new System.Threading.Timer(_ =>
{
callback();
timer.Dispose();
}, null, milliseconds, System.Threading.Timeout.Infinite);
}
}
上記の例では、Delay
メソッドを使用して指定されたミリ秒数待機し、コールバック関数を呼び出しています。これにより、GUIスレッドがブロックされずに他の処理を実行できます。
以上の方法を使用することで、C#でGUIをブロックせずに待機することができます。適切な方法を選択し、アプリケーションの応答性を向上させることが重要です。