|
分類:[.NET 全般]
お世話になります。
環境:Windows 10 Visula Studio 2017 使用言語:C++/CLI
にて画像処理系の開発をしております。 デリゲート(BeginInvoke)を使用し並行処理できないかと試していましたところ行き詰ってしまいました。
デリゲート(BeginInvokeで処理を開始させた場合)で関数の戻り値を取得することは可能でしょうか。
※Invokeで処理を走らせた場合、実行関数の戻り値は取得できました。 ※関数に戻り値があるがBeginInvokeで指定しても特にエラーはおきませんでした。
以下簡略したコードです。
//------------------------- // Invoke の場合 //-------------------------
delegate double MyDele(int); double myfunc(int X) {
double dblA;
dblA = foo();
return dblA; } int main() { int a; MyDele^ dele = gcnew MyDele(&myfunc);
double getAns = dele(a);//BeginInvokeで走らせない場合はInvokeとなるようです ※ 戻り値を確認できました
return 0; }
//------------------------- // >BeginInvokeの場合 //-------------------------
delegate double MyDele(int); double myfunc(int X) {
double dblA;
dblA = foo();
return dblA; } int main() { int a; MyDele^ dele = gcnew MyDele(&myfunc); IAsyncResult^ result = dele->BeginInvoke(a,nullptr,nullptr); dele->EndInvoke(result);
※ 戻り値を取得したい・・・・
return 0; }
myfunc(int X)にポインタ型の引数を増やして、それに戻り値を代入してみたのですが
#myfunc(int X、double^ k) # k=dblA
EndInvoke後に呼び出し元のmyfunc(int X、double^ k) のkの値はnullptrとなってしまいます。
お力添えいただければ幸いです。何卒よろしくお願い申し上げます。
|