|
■No66379 (マシュー さん) に返信 > このため、子フォームのDataGridViewの行選択と親フォームのPictureBoxの画像処理を非同期で行いたいのですが、 > どのような方法があるでしょうか? > 可能であれば、子フォームのDataGridViewの行選択が行われた時、すでに親フォームの画像処理が実行中の場合には > この画像処理を一時中断し、最新の子フォームのDataGridViewの選択内容で親フォームの画像処理を再開できればいいのですが、 > このようなことは可能でしょうか?
できるともできないとも言えます。 それは、あなたが「画像処理」と呼んでいる処理がどのようなものかわからないためです。
具体的なことがわからないので、おおざっぱに書いてしまいますが、画面に表示する処理であれば、できないと言えるかもしれません。 フィルター・回転・トリミングなどの画像処理であれば、その部分をスレッドにしてしまえば非同期にはできますが、難易度は上がります。 できあがったら反映するだけでなく、キャンセルもあるわけですから、排他する・同期をとるのにスレッドの動きや隙をきちんと考えて練り上げる必要があります。
まずは非同期処理について学んでみてください。 古くからあるスレッド(Thread, BackgroundWorker)、最近の Task など、アプローチはいくらでもありますが、きちんと理解していないとたまに例外が発生する、動きがおかしいという不具合を埋め込むことにつながります。
|