一个普通wpf程序,涉及到一些数据库的操作,在添加完数据库之后,需要弹出一个MessageBox显示保存成功.服务端有两种,一种是本机模拟的,一种是真实服务端,不在本地.当使用本机模拟服务端时一切正常,当使用真实服务端时,点击MessageBox的确定之后会失去响应很久(大约2至3分钟),调试发现当MessageBox.show执行完毕之后,就一直停着,没有任何操作,有没有高手能解释下.

解决方案 »

  1.   

    应该是代码的问题
    和messageBox没什么关系
      

  2.   

    应该有关系的,去掉MessageBox之后一切正常
      

  3.   

    目前无法修改了,要发布了,来着想问问可能的原因,我也觉得是某些原因引起的主线程被阻塞,不知道是不是和这是WPF的程序有关
      

  4.   

    如果是代码出异常,那为什么删了MessageBox之后就一切正常了呢
      

  5.   

    不要用主线程去做 this.dispatch.BeginInvoke()
      

  6.   

    因为跳出 MessageBox, 引起了该线程的人工延迟, 可能由此导入了线程同步的问题, 建议你重点看下这方面
      

  7.   

    楼主的意思是说 远程调用 相关时 出现问题,如果是这样那么,是不是检查一下,看看那些
    WS调用中会不会出现跨越的mbox 比如服务端完成,弹出mbox这里是不是出现一个XML传输等
    方面的原因, 反正 我觉得 这个不是大问题完全可以稍稍改一下设计来实现同样的效果而避免
    一些远程通迅方面造成的不明困惑。
      

  8.   

    呵呵,其实也不是大问题,目前就是把messagebox去掉了,提醒一下大家,以后使用messagebox的时候小心一点,碰到和我一样的问题的时候注意看下是不是messagebox出了问题
      

  9.   

    光去掉 MessageBox 只是治标不治本, 问题根结还在于你线程同步的处理不够完善, 无法容忍线程的延迟(弹出一个MessageBox 相当于手工执行线程 Thread.Sleep), 如果不解决, 以后还会出各种莫名其妙的问题, 所以应该趁问题暴露彻底解决好
      

  10.   

    messagebox应该只会阻塞UI线程吧,那我真想不出,为什么在本地模拟器好好的,连到远端服务器就有问题
      

  11.   

    你 UI 操作不会与其他线程互动吗? 问题肯定出在其他线程与 UI 线程交互的地方
    一个方法可以模拟下, 你一般 MessageBox 停留几秒会引起错误, 把对应的 MessageBox 去掉, 改为 Thread.Slee(xxx); //xxx 为你停留的秒数, 看是否会有问题