だから、私が持っているものはすべて、スレッドAと呼ばれるSystem.Threading.Threadの参照であり、私は別のスレッド上にあり、スレッドBと言うことができます。スレッドAで少しのコードをしばらく実行してから、元に戻してください。私が持っている参照を使用して、どのように私はそれにアクションを行うスレッドAを呼び出すことができますか?System.Threading.Thread - 操作を実行する
私はC++/cliライブラリを作っています。私のオブジェクトの1つはスレッド親和性を持っています。メソッドに入ると、Dispatcher.Invokeのようにスレッドを交換する必要があります。
void AllegroSharp::Display::DrawToBackBuffer(BitmapImage^ image)
{
al_draw_bitmap(image->GetBitmap(), (float)image->Rect->Position->X, (float)image->Rect->Position->Y, 0);
}
DrawToBackBufferは、スレッドBとal_draw_bitmapに呼び出されるが、私はへの参照を持っているスレッドA、上で呼び出す必要があります。どのようにスレッドAでこれを行うことができますか?スレッドBは、管理されたコードでTask.Runを実行したときにC#が生成したスレッドの一部です。
このWinforms、WPFなどですか? –
*特定のスレッドで任意のコードを実行することは一般的に不可能です。スレッドが協力しない限り、[プロデューサ - コンシューマの問題](https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem)を解決する必要があります。スレッドセーフなキューを取り出し、スレッドを空にするスレッドでループします。どのスレッドもキューにアイテムを追加できます(例:デリゲートオブジェクト)。 GUIプログラムのUIスレッドは、常にそれを解決し、Control :: Begin/Invoke()またはDispatcher :: Begin/Invoke()をとります。おそらくあなたが本当に求めているものでしょう。 –
黒板のデザインパターンはあなたが望むことをしますか? https://en.wikipedia.org/wiki/Blackboard_(design_pattern) – EJoshuaS