解决方案 »
- c#如何从串口获得扫描枪中文数据
- c# windows服务问题
- 多费率定制实现思路(顶有分啊!)
- 为什么有些论坛里面的文章能直接在百度Google搜到呢,怎么做的请问
- 我一个菜鸟,现在已经对C,C++(不善于开发)比较熟悉,现在想全攻C#,想请教大哥们,给点学习建议和经验。
- WinForm中如何获得本局域网的IP列表?
- 小问题:怎样用简单的方法将dataset中的几张表合并成一张表
- 程序一旦运行到propertySet.GetProperty("password")就死
- 谁有近来看看
- 数值类型转换问题,(欢迎回帖)
- C# 怎样检测连通了外网?(我是校园网)
- C# sockets TCP 同步,为什么换一个IP,第一次读数据返回的都是0
do
{
//获取数据
Thread.Sleep(2000);//获取一次数据睡眠2S
}while(true);
}XXX()
{
do
{
//委托刷新数据
Thread.Sleep(5000);//5S刷新一次数据
}while(true);
}
A
{
public delegate void refleshStationUI(List<string[]> stationEquInfo, List<ListViewItem> equListViewItem, bool isPlay, bool isSubString91, int monitorErrorCount, StationLayoutDoc sld);
public refleshStationUI _refleshUI;
XXX()
{
_refleshUI(stationEquInfo,equListViewItem, isPlay, isSubString91, monitorErrorCount, sld);}
}UI
{
void C(){
A a = new A(station, doc, this);
a.XX();
a._refleshUI = new a.XXX(ThreadFlushUI);
}public void ThreadFlushUI(List<string[]> equInfo, List<ListViewItem> equListViewItem, bool isPlay, bool isSubstring91, int monitorErrorCount, StationLayoutDoc sld)
{
//实现界面刷新
}}
@gzyyan249 使用try...catch...
实现界面刷新的代码,是否有异常发生?如果产生InvalidOperationException,并且提示为线程间操作无效....那么请用 Invoke,示例:
private void Form1_Load(object sender, EventArgs e)
{
var t = new System.Threading.Thread(() =>
{
//try
//{
// this.Text = "直接在其它线程中赋值为发生InvalidOperationException";
//}
//catch(InvalidOperationException ex)
//{ //} this.Invoke(new Action(() =>
{
this.Text = "从另一条线程,使用Invoke方法,在拥有此控件的基础窗口句柄的线程上执行指定的委托。";
}));
});
t.Start();
}
给两个线程起个名字
T1.Name = "线程1";在循环里判断
where (1=1)
{ ......
.......
if (Thread.CurrentThread.Name == "线程1") break;
}还有楼上说的加锁也是有必要的.
do
{
//获取数据
Thread.Sleep(2000);//获取一次数据睡眠2S
}while(true);
}XXX()
{
do
{
//委托刷新数据
Thread.Sleep(5000);//5S刷新一次数据
}while(true);
}
请填写完整代码上面的仁兄一个个说什么加lock,我想请问lock 谁? 如果你的xx和xxx是内容只有这些,我保证你的两个现正永久无限死循环,跳出应该是你的XXX里面的代码异常了一般有多个线程同时更改一个对象的时候才需要加lock