form崩溃???

空白已存在 2019-01-15 03:16:38
//自动入库
private void 自动入库ToolStripMenuItem_Click(object sender, EventArgs e)
{
System.Timers.Timer t = new System.Timers.Timer(5000); //实例化Timer类,设置间隔时间为5毫秒;
t.Elapsed += new System.Timers.ElapsedEventHandler(theout); //到达时间的时候执行事件;
t.AutoReset = false; //设置是执行一次(false)还是一直执行(true);
t.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件;

}
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
//扫描标签,获取标签号
sm.Inquiry();
//标签号
string str = sm.FInventory_EPC_List;
if (str!=""&&str!=null)
{
//查询数据库是否存在该标签
List<MaterialInfo> materialInfoList = new List<MaterialInfo>();
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from tb_material where materialId = " + str;
using (SqlDataReader r = cmd.ExecuteReader())
{
if (r.Read())
{

}
else
{
sm.Show();//为什么展示这个form,鼠标一直打转,界面未展示完全,一会儿就崩了???

}
r.Close();
}
}
}
}

}


...全文
212 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
空白已存在 2019-01-16
  • 打赏
  • 举报
回复
线程阻塞了?
空白已存在 2019-01-15
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
正是要再现你的问题,因为不知 sm 为何物而搁置
sm是我需要跳转form的对象啊
xuzuning 2019-01-15
  • 打赏
  • 举报
回复
正是要再现你的问题,因为不知 sm 为何物而搁置
liusa1997 2019-01-15
  • 打赏
  • 举报
回复
引用 3 楼 空白已存在 的回复:
我测试了下,在timer事件里展示form就会卡死,砸办???

你这个应该是多线程导致阻塞了,你可以尝试用异步来解决阻塞,或者开一个线程让timer执行这个线程,线程执行这个方法,Thread thread = new Thread(new ThreadStart(这里面是个委托));
空白已存在 2019-01-15
  • 打赏
  • 举报
回复
System.Timers.Timer.Elapsed事件里不能调用form的show()方法吗?
空白已存在 2019-01-15
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
sm 是啥玩意?
不用管上面的,你看我发的测试例子
xuzuning 2019-01-15
  • 打赏
  • 举报
回复
sm 是啥玩意?
空白已存在 2019-01-15
  • 打赏
  • 举报
回复
我测试了下,在timer事件里展示form就会卡死,砸办???
xian_wwq 2019-01-15
  • 打赏
  • 举报
回复
1. sm显示的过程中还做什么操作了?

2.timer存在重入问题
如果sm显示超过了interval,就会重复执行,
如果timer中的函数是不可重入,那么出问题不可避免

3.把数据处理和数据显示分离开比较合理
sdfgrtyu 2019-01-15
  • 打赏
  • 举报
回复
跨线程了操作了?

110,536

社区成员

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

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

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