1

我对 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。

我试图让它运行几个小时,但在某一时刻,我所有的尝试都结束了:因为我需要从不同的方法启动和停止计时器,所以我需要在方法之外声明它。问题是:我只能在这里将静态方法声明为委托。如果该方法是静态的,我无法更改计时器委托方法使用的参数。

我知道我的英语和解释不是最好的,但我希望你能明白我的意思。我怎样才能实现这个功能?问题是:我不能更改调用我的类的函数。

4

1 回答 1

0

为什么你必须声明你的定时器是静态的?你不应该。只需在您的类中将其声明为常规变量即可。

于 2012-06-26T08:50:47.717 回答