【发布时间】:2015-06-17 02:49:48
【问题描述】:
我确定这个问题已经在某个地方得到了回答,但是几个小时以来我一直在尝试在这里找到一种方法,除了跨过Thread Timers(这对于周期性事件来说很好,但当计时器有不同的变量和间隔使用)我没有找到任何东西。我真的不确定要搜索什么。非常感谢更好的线程标题或描述!
在Thread 中,我正在下载一个 JSON,其中包含有关虚拟物品的信息,然后使用HTTPClient 解析这些值并将其添加到 ListView 中。每个项目的 JSON 看起来像这样(项目名称从 TextBox 中读取并添加到请求和 ListView)
{
"success":true,
"price":"31,98",
"amount":"33"
}
ListView 包含 4 列,而在 Interval 列中输入所需的刷新间隔。
Item Name Price Amount Interval
我的计划:我想用普通的文本框和按钮将项目名称和间隔添加到 ListView。然后我想启动计时器,其中每个都将读出一个项目的间隔,然后用列表中存放的间隔刷新相应项目的价格。每个项目都应该有一个 Timer,可以独立于其他 Timer 执行 HTTP 请求。
线程一次只处理一个项目,但它不会定期自动刷新值;
private void getPrice()
{
try
{
HttpClient client = new HttpClient();
JObject o = JObject.Parse(client.GetStringAsync("http://localhost/item.php?itemname=" + tb_MarketName.Text).Result);
string Price = (string)o["price"];
string Amount = (string)o["amount"];
lV_Items.Invoke((Action)delegate
{
ListViewItem items = new ListViewItem(tb_ItemName.Text));
items.SubItems.Add(Price);
items.SubItems.Add(Amount);
items.SubItems.Add(tb_Interval.Text);
lV_Items.Items.Add(items);
});
}
catch (Exception e)
{
SendMail("Crash at " + DateTime.Now.ToString(), e.ToString());
}
}
【问题讨论】:
标签: c# multithreading timer task