如果有一个如下所示的对象:
public class MyTask
{
private Connection _someKindOfConnectionThatShouldStayOpen;
public MyTask() { ... Opens connection and other stuff }
void DoWork(object arg) { ... }
}
我想创建一个小应用程序来创建对象并定期运行DoWork方法(比如说每秒),而不会破坏对象。 这样做的最佳方式是什么? (即最安全和最佳实践)
答案 0 :(得分:2)
答案 1 :(得分:1)
在您的应用程序中,创建一个MyTask的类级实例和一个计时器。在计时器的已用事件中,调用所需的方法。我会做类似的事情:
using System.Timers;
using System.Threading;
class Program
{
static MyTask taskInstance = new MyTask();
static ManualResetEventSlim cancelEvent = new ManualResetEventSlim(false);
static void Main()
{
var timer = new Timer
{
AutoReset = true,
Interval = 1000
};
timer.Elapsed += (x, y) => taskInstance.DoWork();
cancelEvent.Wait();
}
}
请记住,这不是完整的或经过测试的,但这是我想要的基本想法。每当您需要停止应用程序时(由于用户输入或其他原因),请调用cancelEvent.Set();