作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 Windows Mobile 应用程序 (Compact Framework 2.0 SP1),这段代码给我带来了一个错误:
public Image Imagen
{
get
{
return imagen;
}
set
{
imagen = value;
this.Invalidate();
}
}
代码是从一个新线程调用的。我尝试使用 **InvokeRequired 来解决:
public Image Imagen
{
get
{
return imagen;
}
set
{
imagen = value;
if (this.InvokeRequired)
this.Invoke(this.Invalidate);
else
this.Invalidate();
}
}
但是 this.Invoke(this.Invalidate); 行无法编译。我该如何解决这个问题?第一个错误是您可以与在另一个线程上创建的控件进行交互。
谢谢!
最佳答案
Invalidate 不需要调用。
invalidate 仅包含一条由主线程处理的绘制消息以及其余未决消息。但是当您调用 invalidate 时绘制并没有完成,并且该线程没有更改控件,因此您不需要为其使用调用。
如果你需要确保控件被刷新,也许invalidate还不够,你还需要调用update。
关于C# 线程和 this.Invalidate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/607646/
我是一名优秀的程序员,十分优秀!