[英]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.