繁体   English   中英

在C#中的2个功能之间切换

[英]Switching between 2 functions in C#

我有2个这样的功能:

//Function1
public int function1()
{
...//some code
}
//function2
public double function2()
{
...//some code
}

//Main

public static void Main(string[] args)
{
function1()
function2()
}

在我的Main方法中,我Main如何先调用function1()然后再function2() 然后睡30秒 ,并再次调用function1()的第一和之后function2() ; 然后睡30秒 ,依此类推...?

谢谢

请尝试以下操作:

while (true)
{
   function1();
   Thread.Sleep(TimeSpan.FromSeconds(30));
   function2();
   Thread.Sleep(TimeSpan.FromSeconds(30));
}

Thread.Sleep()结合使用不终止的while循环。

while (true)
{
    function1();
    function2();
    Thread.Sleep(30000);
}

自然地,在实际程序中,您需要包含一些机制来终止循环。

此外,我也同意丹·布莱恩特的上述评论。 Sleep很少是解决问题的最佳方法,在这里计时器似乎更合适。

您还可以使用System.Threading.Timer来实现,以使函数每30秒运行一次。 这样,您可以保持主线程处于活动状态。

void Main()
{
    using (MyClass myClass = new MyClass())
    {
        while(true)
        {
            // Do some other stuff here (e.g. UI feedback, capture user input).
        }
    }
}

public class MyClass : IDisposable
{
    System.Threading.Timer _timer;
    int _functionNumber = 1;
    bool _disposed;

    public MyClass()
    {
        _timer = new System.Threading.Timer(MyMethod, null, 0, 30000);
    }

    ~MyClass()
    {
        Dispose(false);
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    private void Dispose(bool disposing)
    {
        if (disposing && !_disposed)
        {
            if (_timer != null) _timer.Dispose();
            _disposed = true;
        }
    }

    // Timer callback method
    private void MyMethod(object state)
    {
        if (_functionNumber == 1)
        {   
            function1();
            _functionNumber = 2;
        }
        else
        {
            function2();
            _functionNumber = 1;
        }
    }

    //Function1
    public int function1()
    {
        ...//some code
    }

    //function2
    public double function2()
    {
        ...//some code
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM