c# invoke奇怪的问题。高手指教

shark84 2009-04-16 09:43:57
俺有一个队列每次的错误数据存在队列里面,然后又一个处理线程取队列数据里面的数据。再把数据Invoke到界面上显示。
出了个奇怪的问题。在界面显示处理函数里面用messagebox.show 界面上的数据有改变。但是把这个去掉显示不出来。
下面是代码,高手救命。
//处理线程
public delegate void TProcData(CallPacket APacket);
private TProcData FProcData;
private Form FForm;
protected override void InternalRun()
{
CallPacket APacket;
while (FRun)
{
APacket = FQueue.GetData();
if (APacket!=null)
{
TProcData AProcData = new TProcData(FProcData);
FForm.Invoke(AProcData, new object[] { APacket });
}
}
}
public ProcThread(Queue queue, TProcData aprocdata,Form form)
{
FQueue = queue;
FProcData = aprocdata;
FForm = form;
}

//处理函数
public void ProcData(CallPacket APacket)//处理服务器返回的Info消息
{
switch (APacket.GetReqId())
{
case "INFO":
{
tCurrNum.Text = APacket.GetParam(0);
tWaitNum.Text = APacket.GetParam(1);
break;
}
case "LOGOUT":
{
tOprStatus.Text = "状态:";
ttatus.Text = "排队服务器断开";
loginOk = false;
RefreshControl();//刷新控件
Update();
break;
}
}
}
请高手救命
...全文
231 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
boywangliang 2009-04-18
  • 打赏
  • 举报
回复
学习顶
蓝海D鱼 2009-04-18
  • 打赏
  • 举报
回复
wangkuang5 2009-04-18
  • 打赏
  • 举报
回复
你不用messagebox.show
用richtextbox.append()委托追加,这样有效果不
我不懂电脑 2009-04-17
  • 打赏
  • 举报
回复
的确试试刷新一下。
wangzhe1945 2009-04-17
  • 打赏
  • 举报
回复
有可能messagebox.show 造成界面的刷新,直接Refresh() 看看能否解决 。

奇怪的问题一般是很小的错误引起的。
coodd 2009-04-16
  • 打赏
  • 举报
回复
看不大懂,多线程得要顶

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧