Visual Studio 2012 の C# 用のこのコードがあります。
public Task SwitchLaserAsync(bool on)
{
return Task.Run(new Action(() => SwitchLaser(on)));
}
これにより、引数 bool を持つタスクとしてSwitchLaser
メソッド (クラスの public 非静的メンバー) が実行されます。MyClass
マネージ C++/CLI で同様のことをしたいと思います。しかし、1 つのパラメーターを受け取るメンバー メソッドを実行するタスクを実行する方法を見つけることができません。
現在の解決策は次のとおりです。
Task^ MyClass::SwitchLaserAsync( bool on )
{
laserOn = on; //member bool
return Task::Run(gcnew Action(this, &MyClass::SwitchLaserHelper));
}
機能の実装SwitchLaserHelper
:
void MyClass::SwitchLaserHelper()
{
SwitchLaser(laserOn);
}
C# のように、ヘルパー関数とメンバーを作成しないという解決策が必要です (これはスレッドセーフではありません)。