我的IP修改器做好了,我有一个“自动功能”,本意这个自动个专门用在ADSL,自动获取IP而已。(这功能没问题)但因为需求增加了,我得要判断这个“自动功能”运行后,要判断能否连internet。如果能连上就关闭程序,没连上就XXX(这个也实现了)问题来了。增加判断后,我按了一下自动的按钮,它没什么反应,而且“自动获取”并没有成功,也不关闭程序!但我在那个button那个设一个断点,F11~ 一步一步跳~程序完全根据我想法运行。最后关闭了,而且“自动获取”成功!我一直在想,是不是要给计算机一些时间在某个动作上。是不是这样呢?如果是这样?应该怎样给指定的位置设置操作时间?谢谢。

解决方案 »

  1.   

    嗯,InvokeMethod  这个异步啊,那应该怎样才能解决呢!?
      

  2.   

    我估计是异步执行导致的,之前我搞一个新闻发布系统的时候,也出现过这样的问题,我异步执行SQL的时候,也出现过
      

  3.   

    一样啊。一按BUTTON。。马上跳到那个异步方法。。继续F11.就完成所有的工作,速度还快呢~一下子就连上internet,程序也关闭
      

  4.   

    Invoke不是异步的,BeginInvoke才是异步的搂主不妨贴下代码,诊断诊断
      

  5.   

    我终于找出大概的问题了
     
    我这样:              自动获取IP()
                  MessageBox.Show("3");
                MessageBox.Show("2");
                MessageBox.Show("1");
                MessageBox.Show("0");
                判断能否连上Internet()就是那个几个messagebox,拖延一下时间,程序就完整执行。。
    那是不是确实需要时间呢?用什么方法可以代替那几个messagebox呢?哈哈,说好是自动嘛,干嘛要人家按呢?哈哈
      

  6.   


    我估计也是这个。。可惜我不会。。55555555555555555555555555我用messagebox记载每一步操作。分别输出4,3,2,1,0,
    它是这样显示的、。。4,3,2,1,2,2,2,2,2,2,2,2,2,2,2  
      

  7.   

    时间可以这样:
    System.Threading.Thread.Sleep(1000);
      

  8.   

    sleep干什么?
    你直接在需要停顿的地方加个阻塞上去,等你的事情做完了,释放这个阻塞,程序就继续往下走了嘛,记得阻塞要是全局的,不然你没办法控制。
      

  9.   

    自动获取 IP 地址是需要时间的。楼主不妨让程序在自动获取 IP 之后,不停地检测当前的 IP 地址配置是多少,如果获取到了有效的地址,则认为获取成功。否则就是获取失败了。