我有一个 C# 应用程序,它从服务器接收更新、处理它并更新 GUI。更新不断进来,每秒说几次。我希望应用程序最多每 2 秒更新一次 GUI。因此,如果更新在时间 T 到来,我希望从 T 到 T+2sec 的所有更新都保留在缓冲区中,并在 T+2sec 进行处理和 GUI 更新。我知道在 JS 中你可以使用 setTimeout() 在未来的某个时间执行一些代码,所以我想要这样的东西。
这样做的合适方法是什么?我听说使用线程来“调度”函数调用并不是一个好主意,但我不确定是否有更好的方法来做到这一点。使用一个间隔两秒的计时器,与 GUI 线程同步,进行处理/更新会不会很糟糕?
C#here - 是否可以使用抽象基类定义具有默认行为的方法,并在子类实现之前调用此默认值?例如:
public abstract class Base
{
public virtual int GetX(int arg)
{
if (arg < 0) return 0;
// do something here like "child.GetX(arg)"
}
}
public class MyClass : Base
{
public override int GetX(int arg)
{
return arg * 2;
}
}
MyClass x = new MyClass();
Console.WriteLine(x.GetX(5)); // prints 10
Console.WriteLine(x.GetX(-3)); // prints 0
Run Code Online (Sandbox Code Playgroud)
基本上我不想在每个子实现中都放置相同的样板...