我对C#和编程都很陌生。目前我发现以下问题,我希望你能帮助我。我有一个目前看起来像这样的程序:
public class myClass
{
public void SetSomething(Parameter)
{
///Here something is set
}
private void DoSomething()
{
///Here something is done using paramaters from the SetSomething()
}
public void Run()
{
DoSomething(); //this needs to be done periodicly after started one time
}
public void Stop()
{
//Stop doing something periodically
}
}
从外部函数(通过表单的用户输入)调用SetSomething,Run和Stop。如果调用Run()直到调用Stop(),DoSomething必须定期运行。问题是:这不应该阻止当前线程。所以Sleep(x)不是选项。 SetSomething参数变化非常频繁,因此之前调用Stop(),之后调用另一个Run()不是更改DoSomething()参数的选项
最有可能的计时器是这里的完美解决方案。但由于此程序在WinCE6上使用compact.Net框架,因此System.Timers命名空间不可用。我尝试使用system.windows.forms.Timer,但这不会触发给定的事件(也许是因为它在错误的线程中。我没有写表格,不能改变它)。所以我唯一的选择似乎是System.threading.timer。
我试图让它运行多个小时但是我的所有尝试都结束了:因为我需要从不同的方法启动和停止计时器,我需要在方法之外声明它。问题是:我只能在这里声明静态方法作为委托。如果方法是静态的,我就无法更改定时器委托方法使用的参数。
我知道我的英语和解释并不是最好的,但我希望你能明白我的观点。我怎样才能实现这个功能?问题是:我不能改变调用我班级的功能。
答案 0 :(得分:0)
为什么你必须声明你的计时器是静态的?你不应该。只需将它声明为您班级中的常规变量。