» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


 29 12
发新话题
打印

C#编程遇到一个问题,求解决思路。。。。

感觉就是多线程没处理好,.net版本是多少?


TOP

发生错误的时候,去看看windows日志



TOP

引用:
原帖由 klites 于 2016-9-17 20:41 发表
感觉就是多线程没处理好,.net版本是多少?
4.0

VS2010

wpf工程

没用到多线程啊。。。因为压根不会。。。


TOP

引用:
原帖由 xpressure 于 2016-9-17 20:49 发表
发生错误的时候,去看看windows日志
代码在单位的机器里,明天去看看,多谢指教!

TOP

posted by wap, platform: iPhone
引用:
原帖由 @shixn  于 2016-9-17 20:20 发表
我试过在主窗体声明dlg

然后再click里再声明一个dlg1
(正常来说这里dlg1有好多初始化操作,设置横纵坐标范围,图线颜色等,但加不加效果一样,都死。。)
然后
dlg=dlg1

dlg.show()

道理应该一样吧,,,这样也不行。。。

而且有时候需要新建多个窗口,必须要有多个DisplayDlg对象。。。
这个DisplayDlg类是你自己写的吗?会不会有些资源调用了没释放?

TOP

引用:
原帖由 jzhl 于 2016-9-17 21:19 发表
posted by wap, platform: iPhone
这个DisplayDlg类是你自己写的吗?会不会有些资源调用了没释放?
这个就是新建窗口,起个名字(DisplayDlg),然后拖了个几个控件放进去。。。

弄几个变量,主窗口里的数据传递进来。

然后搞了个定时器,1秒1次,把变量里的数显示出来。

现在为了找问题,能删的都删了,只有一个定时器函数,1秒++一个cnt,显示出来,其他没了。。。

百度了下“C# 资源”,感觉跟我没啥关系啊。。。

TOP

wpf里UI是占主线程的,像后台计时并通知前端textbox这类的操作都要用多线程解决,不然前端UI会卡死

TOP

引用:
原帖由 klites 于 2016-9-17 21:30 发表
wpf里UI是占主线程的,像后台计时并通知前端textbox这类的操作都要用多线程解决,不然前端UI会卡死
可是我在主窗口里也有类似的操作,后台定时读串口,显示到textbox,运行1天1夜也没事。。。

只要一show新窗口,5分钟,必死无疑。。。

TOP

引用:
原帖由 shixn 于 2016-9-17 22:07 发表


可是我在主窗口里也有类似的操作,后台定时读串口,显示到textbox,运行1天1夜也没事。。。

只要一show新窗口,5分钟,必死无疑。。。
我好像知道原因了,你明天代码发我下

TOP

引用:
原帖由 xpressure 于 2016-9-17 22:49 发表


我好像知道原因了,你明天代码发我下
好!!!

TOP

posted by wap, platform: 红米Note3
引用:
原帖由 @shixn  于 2016-9-17 20:05 发表
比如我在主窗口的某个函数里,用这个方法生成了窗口

private void NewDlgBtn_Click(object sender, RoutedEventArgs e)
{
    DisplayDlg dlg = new DisplayDlg ();
    .....
    dlg .Show();
    return;
}

当NewDlgBtn_Click函数返回后,dlg还会存在多久??会不会被自动释放??
点了X以后自动dispose而且不能重用。

TOP

引用:
原帖由 maybach 于 2016-9-17 23:59 发表
posted by wap, platform: 红米Note3
点了X以后自动dispose而且不能重用。
他这个是5分钟不等才弹出错误,而且系统没能指出谁抛出的错误,很可能是他的串口在新开窗口后因为某种原因挂掉了,比如资源耗尽,或达到阈值自动关闭,所以有个时间延后
本帖最近评分记录
  • shixn 激骚 +3 恭喜发财 2016-9-19 00:15

TOP

posted by wap, platform: iPhone
高手在民间

TOP

posted by wap, platform: iPhone
引用:
原帖由 @shixn  于 2016-9-17 21:25 发表
这个就是新建窗口,起个名字(DisplayDlg),然后拖了个几个控件放进去。。。

弄几个变量,主窗口里的数据传递进来。

然后搞了个定时器,1秒1次,把变量里的数显示出来。

现在为了找问题,能删的都删了,只有一个定时器函数,1秒++一个cnt,显示出来,其他没了。。。

百度了下“C# 资源”,感觉跟我没啥关系啊。。。
首先你要知道当click这个事件完成后,你的dlg对象已经无效了,如果在这期间做了某事,这些事在dlg对象无效后还在执行就会有问题。
本帖最近评分记录
  • shixn 激骚 +3 恭喜发财 2016-9-19 00:15

TOP

 29 12
发新话题
     
官方公众号及微博