最近、私は独自のサードパーティのライブラリに出くわしたスレッドをブロックしないとこのようにメソッドの振る舞いがあります:呼び出しをブロックするが、
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コアの使用量がかなり高くなっているようです(〜75%)。
myProgram.frmMain.button2_Click(xxx) Line 23
[External Code]
ThirdPartyLib.ClickOnDrawMat(xxx) Line 16
myProgram.frmMain.button1_Click(xxx) Line 14
私はこれを行うことができる方法を疑問に思って:それはまだユーザーのクリックを待っている間に、私は別のボタンをクリックした後
そして、これは、コールスタックの一例ですか?
ありがとうございます!
ライブラリとは何ですか? – Servy
コンピュータビジョン用の独自のライブラリであるHalcon。 – user1755712