我的朋友和我正在C#中为大学项目创建一个程序。 我们尝试在名为Manager的类中使用单例技术,然后在由计时器每隔T(间隔)调用的函数中使用同一类(管理器)中的GetInstance()。 / p>
我们得到的是一个无序的动作流,这意味着在调试器中我们可以清楚地看到没有明确的“流”(我们怀疑我们是在意外地提示递归函数。)
我们也很不确定我们是否正确使用了Timer。 DateQueue只是我们在项目中用于Queue的名称。它的功能完全类似于队列(由双链表实现)
private static Manager _instance;
public static Manager GetInstance()
{
if (_instance == null)
_instance = new Manager();
return _instance;
}
public Manager()
{
DocumentHash = new Dictionary<string, Doc>();
deleteTimer = new Timer(DeleteOld, null, 0, 1000);
}
private static void DeleteOld(object o)
{
DateQueue<TimeData> tempQueue = DateQueue<TimeData>.GetInstance();
Manager tempManager = Manager.GetInstance();
TimeSpan deleteEveryTS = new TimeSpan(0, 0, 10);
DateTime dateForDelete = new DateTime();
dateForDelete = DateTime.Now;
dateForDelete -= deleteEveryTS;
TimeData temp = default(TimeData);
注意我们没有添加整个函数只是因为Visual Studio永远不会超出这一点,其余部分与此问题无关。所以没有必要上传它。
我们还有一个问题,即DeleteOld必须是静态的,因为它是由Timer(System.Threading)调用的,但是我们需要这个函数在我们没有上传的行中使用非静态字段和方法