我找到了这段代码:
private void PollPixel(Point location, Color color)
{
while(true)
{
var c = GetColorAt(location);
if (c.R == color.R && c.G == color.G && c.B == color.B)
{
DoAction();
return;
}
}
}
但是我不想要那个return();
,我希望它能够工作直到我关闭程序。如果我删除该返回,该程序将无法正常工作。它将启动一个infinte循环。我希望这个程序注意一个像素,然后如果它改变了颜色,DoAction
将激活一个宏。然后它会再次开始关注。我怎么能这样做?
答案 0 :(得分:0)
您可以使用Thread.Sleep
或使用Timer
并添加间隔以执行您想要的操作。间隔以毫秒为单位。
阅读以下帖子并确定最适合您的内容:
答案 1 :(得分:0)
尝试:
Task.Factory.StartNew( () => {
// your code here
});
这将为您的方法创建一个线程。不要忘记添加Thread.Sleep(1000)
(或任何其他值),否则您将创建一个繁忙的循环。
编辑:根据要求提供更完整的样本:
private bool run = true; //set this to false when your program closes
private void StartPollPixel(Point location, Color color)
{
Task.Factory.StartNew( () => {
while( run )
{
var c = GetColorAt(location);
if (c.R == color.R && c.G == color.G && c.B == color.B)
{
DoAction(); //if you manipulate the UI do not forget to Invoke()
Thread.Sleep(1000);
}
}
});
}