【发布时间】:2013-08-22 14:16:33
【问题描述】:
我为一个 windows phone 项目创建了一个 json web 服务。我需要每秒从 Web 服务中恢复数据,我使用带线程的 DispatcherTimer 系统
private void client_DownloadInfoConf(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
//some code
DispatcherTimer TradeThread = new DispatcherTimer();
TradeThread.Interval = TimeSpan.FromMilliseconds(1000);
TradeThread.Tick += new EventHandler(dispatcherTimer_Tick);
TradeThread.Start();
}
else
MessageBox.Show("Error : " + e.Error);
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
WebClient client_quest = new WebClient();
client_quest.DownloadStringAsync(new Uri("url" + info_conf.id));
client_quest.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadQuestConf);
}
private void client_DownloadQuestConf(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
string text = e.Result;
QuestConf resultat = JsonConvert.DeserializeObject<QuestConf>(e.Result);
string sub = texte.Substring(0, 5);
TextBlock text_quest = new TextBlock();
foreach (var cust in resultat)
{
//The problem is here, i can't retrieve data from the object
}
}
else
MessageBox.Show("Error" + e.Error);
}
这里的问题是,如果我尝试从“var cust”中获取数据,则会发生错误,我无法从对象中提取数据...
类,用于提取 json web 服务的数据
public class Question
{
public string id { get; set; }
public string category { get; set; }
public string name { get; set; }
public string value { get; set; }
}
public class Answer
{
public string id { get; set; }
public string label { get; set; }
}
public class QuestConf:List<object>
{
public Question question { get; set; }
public List<Answer> answers { get; set; }
}
提前感谢您的帮助
【问题讨论】:
-
您应该考虑使用 websocket 而不是每秒轮询一次,signalr 可能适合您的情况
-
我每秒轮询一次测试,项目将每 30 秒询问一次 web 服务
-
foreach (var cust in resultat)你忘了把初始化resultat变量的部分放在里面 -
@KooKiz 哦,对不起,我在这里提交后剪切了部分代码,并且我剪切了这个初始化,这个变量被初始化为“QuestConf resultat = JsonConvert.DeserializeObject
(e.Result); ",我在主题上添加这个
标签: c# json multithreading windows-phone-8