C#のBeginInvokeメソッドの使い方は何ですか?

C#において、BeginInvokeはデリゲート型のメンバーであり、デリゲートを非同期で呼び出すために使用されます。使用方法は以下の通りです:

  1. 最初に、呼び出すメソッドを指定して、デリゲートインスタンスを作成します。
  2. 使用委託対象のBeginInvokeメソッドを使用して非同期呼び出しを開始します。このメソッドは、呼び出すメソッドの引数とコールバック関数を受け入れます。
  3. コールバック関数内では、非同期呼び出しの結果と状態にアクセスすることができます。

以下是使用BeginInvoke的示例代码:

public class Example
{
    public delegate void MyDelegate(string message);

    public void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }

    public void StartAsync()
    {
        MyDelegate myDelegate = new MyDelegate(PrintMessage);

        myDelegate.BeginInvoke("Hello, World!", PrintCompleted, null);
    }

    public void PrintCompleted(IAsyncResult result)
    {
        // 处理异步调用的结果
        MyDelegate myDelegate = (MyDelegate)((AsyncResult)result).AsyncDelegate;
        myDelegate.EndInvoke(result);
    }
}

public class Program
{
    public static void Main()
    {
        Example example = new Example();
        example.StartAsync();

        // 等待异步调用完成
        Console.ReadLine();
    }
}

上記の例では、最初に名前がMyDelegateの委任タイプが定義され、文字列パラメーターを受け入れます。そして、メッセージをプリントするPrintMessageメソッドが定義されます。StartAsyncメソッドでは、MyDelegateの委任インスタンスが作成され、BeginInvokeメソッドを使用してPrintMessageメソッドが非同期で呼び出されます。PrintCompletedコールバック関数では、非同期呼び出しの結果を処理できます。最後に、MainメソッドでExampleインスタンスを作成し、StartAsyncメソッドを呼び出し、次にConsole.ReadLineメソッドで非同期呼び出しが完了するのを待ちます。

BeginInvokeメソッドを使用する際には、リソースの正しい解放を確保するために、EndInvokeメソッドを手動で呼び出す必要があります。

bannerAds