マルチスレッド処理(BackgroundWorker)追記

マルチスレッド処理(BackgroundWorker)のDoWark内の処理結果をRunWorkerCompletedに伝える方法


Resultプロパティ使用する方法

System::Void DoWork( System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e )
{
    // ~宣言・処理は省略~
    e->Result = pcObject;
}

System::Void RunWorkerCompleted( System::Object^ sender, System::ComponentModel::RunWorkerCompletedEventArgs^ e )
{
    // ~宣言・処理は省略~
    pcObject = e->Result;
}

Cancelプロパティ使用する方法

System::Void DoWork( System::Object^ sender, System::ComponentModel::DoWorkEventArgs^ e )
{
    e->Cancel = true;
}

System::Void RunWorkerCompleted( System::Object^ sender, System::ComponentModel::RunWorkerCompletedEventArgs^ e )
{
    if( e->Cancelled == true )
    {
        // キャンセル時の処理
    }
}

Resultプロパティは、Cancel,Errorプロパティの値を調べてからやらないとダメなので、
単純に成功/失敗だけの情報であればCancelプロパティを使うのが一番簡単。

コメントを残す

メールアドレスが公開されることはありません。