在Windows窗体项目中,我使用win32 api订阅全局键盘事件,当我按下win + alt + E时触发事件,在事件处理程序中我有这段代码:
_rectangle = new ScreenBoundingRectangle();
_rectangle.Location = Location;
_rectangle.Visible = true;
我保留一个变量到我的矩形,现在基于一些逻辑,我想隐藏矩形,所以我使用这行代码将可见性设置为false:
_rectangle.Visible = false;
然而,我得到了着名的交叉线程异常,即使我尝试这个:
this.Invoke(new MethodInvoker(() =>
{
_rectangle.Visible = false;
}));
我仍然得到交叉线程异常!
<_> _rectangle没有调用方法,还有其他方法吗?答案 0 :(得分:0)
仅适用于使用VisualUIAVerify
库且会遇到此问题的任何人:
下载开源并将其添加到ScreenBoundingRectangle的Visiable属性
public bool Visible
{
get { return this._visible; }
set
{
this._visible = value;
if (value)
SafeNativeMethods.ShowWindow(_form.Handle, 8);
else
{
//Here invoke _form:
this._form.Invoke(new MethodInvoker(() =>
{
_form.Hide();
}));
}
}
}