首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

winform多线程有关问题

2013-02-24 
winform多线程问题我在winform中,窗口左边是treeview展示的设备列表,右边是选中设备的检测信息,我在窗口启

winform多线程问题
我在winform中,窗口左边是treeview展示的设备列表,右边是选中设备的检测信息,我在窗口启动时启动一个检测线程,一直在那边循环。当选中的设备改变时,我把检测的ip地址更换一下重新进行检查。但碰到一个问题,如果某一设备由于还在检测过程中,需要result = (SnmpV1Packet)target.Request(pdu, param)返回后才能开始执行新的设备的检测,这样在某设备不在线的时候反应会比较慢,我应该如何实现来避免这种情况?
[解决办法]
不然可能系统资源占用大一些
[解决办法]
四楼的回答是正解
[解决办法]
如果没有异步方法,只能多开线程。
[解决办法]
用线程池多好

没选择一个设备就queue一个线程

不过这得要求你得检测方法支持并行执行

代码大致这样

        private void OnSelect(object sender, RoutedEventArgs e)
        {
            ThreadPool.QueueUserWorkItem(CheckDeviceProc, 1);
        }

        void CheckDeviceProc(object state)
        {
            var id = (int)state;

            // check device by id

            // 由于这里没有执行在UI线程上,需要通过Invoke来通知UI
            this.Dispatcher.Invoke(new Action<string>(message => {
                // 这里的代码会被执行在UI线程上
                // 在此处更新UI
            }), "完成设备检测");
        }

热点排行