最近、独自のサードパーティ ライブラリに出会い、次のように動作するメソッドがあります。
public Point ClickOnDrawMat(DrawMat drwmat)
{
Point pt;
//waiting user mouse click on DrawMat and assign to pt
return pt;
}
コードがメインスレッドからこのメソッドを呼び出すと、ユーザーがクリックするまでこのメソッドでブロックされ、からポイントリターンが取得されClickOnDrawMat
ます。
public void button1_Click(object sender, EventArgs e)
{
Point userClickedPoint = ClickOnDrawMat(oDrwMat); //Wait until user clicked
//Do stuff with point we got
}
ただし、メイン スレッドはブロックされません。ユーザーのクリックを待っている間に、他のボタン/UI コントロールを押すことができます。
ユーザーのクリックを待っているときに、CPU コアの使用率の 1 つがかなり高い (~75%) ように見えることに気付きました。
これは、ユーザーのクリックを待っている間に別のボタンをクリックした後のコール スタックの例です。
myProgram.frmMain.button2_Click(xxx) Line 23
[External Code]
ThirdPartyLib.ClickOnDrawMat(xxx) Line 16
myProgram.frmMain.button1_Click(xxx) Line 14
どうすればこれができるのだろうか?
前もって感謝します!