我有一个场景,我的C#类有两个方法,分别为
DoThis()
和DoThat()
,这两个方法被外部调用者独立调用,并且可以以任何顺序进行。这两种方法需要以以下方式同步执行:
- 在调用
DoThis()
后,等待至少t1
秒后再继续执行DoThat()
- 在调用
DoThat()
后,等待至少t2
秒后再继续执行DoThis()
static SomeCustomTimer Ta, Tb;
static TimeSpan t1, t2;
public static void DoThis()
{
if(Tb.IsRunning())
Tb.WaitForExpiry();
DoStuff();
Ta.Start(t1);
}
public static void DoThat()
{
if(Ta.IsRunning())
Ta.WaitForExpiry();
DoOtherStuff();
Tb.Start(t2);
}
DoStuff()
和DoOtherStuff()
方法不是长期运行的方法,且不共享资源。通常情况下,DoThis()
和DoThat()
不会同时调用。但我仍然需要防止潜在死锁。
我该如何在C#中最好地实现DoThis()
和DoThat()
方法?
编辑:
我的场景很简单,并没有任意数量的线程调用这些函数。为了简化问题,有一个单独的调用线程以任意顺序调用这些函数。因此,这两个方法不会被同时调用,而是由调用者一个接一个地以任何顺序调用这些方法。我无法控制调用线程的代码,所以我想强制执行连续调用DoThis()
和DoThat()
之间的延迟。
DoThis
或DoThat
创建一个无限但延迟的循环吗?这是你想要的吗? - Enigmativity