如何每秒更改表单元素的值?
How change the value of the form element by each second?
我有 class 扩展 ProgressBar 应该释放一个简单的计时器。
public partial class TimerBar: ProgressBar
{
public TimerBar()
{
InitializeComponent();
Value = 100;
}
...
public void Start()
{
int x = 100/Timer; // procent per second
for (i = Value; i > 0; i--) {
Value -= x;
}
}
}
如何在Value -= x
之前设置延迟1秒?
(它应该不会阻止其他元素)
您可以使用 windorm Timer class 引发一个事件,每秒从您的 class 中调用一个方法。这不会阻塞线程。您将不得不稍微重写您的逻辑并且不使用 for 循环,但它应该能够提供您所需要的。
如果你想在代码中保持循环(因此不能使用 中建议的 Timer
方法)你可以使用 async/await 和 Task.Delay
:
public async void Start()
{
int x = 100/Timer; // percent per second
for (i = Value; i > 0; i--) {
Value -= x;
await Task.Delay(1000);
}
}
我有 class 扩展 ProgressBar 应该释放一个简单的计时器。
public partial class TimerBar: ProgressBar
{
public TimerBar()
{
InitializeComponent();
Value = 100;
}
...
public void Start()
{
int x = 100/Timer; // procent per second
for (i = Value; i > 0; i--) {
Value -= x;
}
}
}
如何在Value -= x
之前设置延迟1秒?
(它应该不会阻止其他元素)
您可以使用 windorm Timer class 引发一个事件,每秒从您的 class 中调用一个方法。这不会阻塞线程。您将不得不稍微重写您的逻辑并且不使用 for 循环,但它应该能够提供您所需要的。
如果你想在代码中保持循环(因此不能使用 Timer
方法)你可以使用 async/await 和 Task.Delay
:
public async void Start()
{
int x = 100/Timer; // percent per second
for (i = Value; i > 0; i--) {
Value -= x;
await Task.Delay(1000);
}
}