【发布时间】:2021-05-08 11:03:35
【问题描述】:
我有一个问题。
下面的源码是按下按钮时面板左右移动的线程。
但是,如果在开发 PC 上移动大约 1 秒,则在测试 PC 上大约需要 4 秒。
*测试 PC 的硬件性能更好。
我想知道为什么会出现这些结果。
private void move()
{
while (Moving)
{
SlidePanel.BeginInvoke(new Action(() =>
{
if (SlideDirection == 0) // Left
{
SlidePanel.Left -= 4;
if (SlidePanel.Left <= SystemSettingbtn.Left)
{
SlidePanel.Left = SystemSettingbtn.Left;
SystemPanel.BeginInvoke(new Action(() =>
{
SystemPanel.BringToFront();
}));
Moving = false;
}
}
else // Right
{
SlidePanel.Left += 4;
if (SlidePanel.Left >= EnvSettingbtn.Left)
{
SlidePanel.Left = EnvSettingbtn.Left;
EnvironmnetPanel.BeginInvoke(new Action(() =>
{
EnvironmnetPanel.BringToFront();
}));
Moving = false;
}
}
}));
Thread.Sleep(1);
}
}
- 使用 [await Task.With Daly (1)] 我已经确认两种环境具有相同的运行时间。 感觉很奇怪 Thread.sleep(1) 在更好的环境中变慢了。
【问题讨论】:
-
可以发
Moving的声明吗? -
@Zer0 我从线程中声明了布尔值。 [bool Moving = false] 和当按钮事件发生时改变 Moving = true -> 线程开始
标签: c# multithreading winforms runtime sleep