private void SetState(int i)
{
var task = Task.Factory.StartNew(() =>
{
Stopwatch sw = new Stopwatch();
sw.Start();
if (getCannonState(i) == 0)
state = 0;
if (getCannonState(i) == 1)
state = 1;
if (getCannonState(i) == 2)
state = 2;
if (getCannonState(i) == 3)
state = 3;
if (getCannonState(i) == 4)
state = 4;
sw.Stop();
Console.WriteLine("Set state of cannon " + i + " took {0} milliseconds", sw.ElapsedMilliseconds.ToString());
});
}
Herer是我的代码。 get cannonstate获取屏幕截图并检查像素。如何运行getcannon状态运行在397ms。但运行setstate需要2000毫秒。为什么这么慢?我需要它从getcannonstate获取recive信息并快速设置状态。
我一直在尝试使用任务,但没有运气。
答案 0 :(得分:2)
脚本需要这么长时间,因为你调用了5次getCannonState ...将结果分配给变量来修复问题并只调用一次getCannonState;)
private void SetState(int i) {
var task = Task.Factory.StartNew(() => {
Stopwatch sw = new Stopwatch();
sw.Start();
var state = getCannonState(i);
sw.Stop();
Console.WriteLine("Set state of cannon " + i + " took {0} milliseconds", sw.ElapsedMilliseconds.ToString());
});
}
答案 1 :(得分:0)
您正在呼叫getCannonState(i)
5次。您应该将其保存在本地变量中并检查:
var checkState = getCannonState(i);
if (checkState == 0)
...
但是查看您的代码,甚至可以将值直接分配给state
state = getCannonState(i);