【发布时间】:2013-05-29 15:40:00
【问题描述】:
我有一个场景,在一个连续运行的线程中,“计时器”调用我的函数“自定义方法”。我无法控制系统代码,这只是为了演示系统是如何工作的,我什至不知道 系统代码 中编写了哪些代码。
系统代码
timer duration = 1000
void timer_elapsed()
{
foreach(string symbol in symbols) //symbol list may vary
{
custommethod(symbol);
}
}
结束系统代码
所以,我的方法“custommethod”只是定期从系统代码中获取一个参数。当用户添加或删除由系统代码处理的符号时,符号列表可能会有所不同。我得到的只是周期性的活动符号。所以,我关心的是保留一个活动符号列表。
我的代码
function custommethod(string symbol)
{
//Check whether new symbol is added or a symbol is deleted
}
结束我的代码
这是我迄今为止尝试过的
HashTable ht=new HashTable();
function custommethod(string symbol)
{
//Check whether new symbol is added or a symbol is deleted
if(!ht.ContainsKey(symbol))
{
ht.Add(symbol,0); //New symbol added
}
//How will i come to know whether a symbol is deleted or not
}
【问题讨论】:
-
有没有办法让你知道timer_elapsed是否已经发生?
-
定时器总是1秒吗?如果是这样,您可以存储 DateTime。现在您将符号输入 HashTable,然后在每次获得新符号时检查它是否过期。
-
不,实际上我使用 Windows 消息发送消息到系统代码,然后调用带有活动符号的 custommethod 函数
-
所以您知道/控制流程何时开始?如果是这样,在发送消息之前,您可以清除 HashTable。这样您就知道您拥有最新的符号列表。还是我错过了什么?
-
好的。那么当你启动进程并填充它时,你能创建一个新的临时哈希表吗?那你可以做个对比吗?
标签: c# asp.net vb.net winforms c#-4.0