最近我遇到了一个专有的第三方库,并且有一个方法以这种方式运行:
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
我想知道如何做到这一点?
提前致谢!