zoukankan      html  css  js  c++  java
  • 对端口Com1的访问被拒绝

         某项目中,需通过com口的方式读取CF卡的rfid,。

    问题:当我关闭模块,然后第二次打该模块时,弹出如下错误”对端口Com1的访问被拒绝”(编程这一行业,不是找不到对象,就是被xxx拒绝!):

             断点调试:在用户控件Loaded事件尝试打开Com口时出现异常:对端口Com1的访问被拒绝”。

    最后找到原因及解决方法:

       加载用户控件时打开了com口,关闭模块时同时也该关闭com口,但是用户控件没有Closing或Closed事件,咋办呢?于是我用了UnLoaded事件解决了这个问题,反复打开关闭模块,不再出现”访问com口被拒绝”这个错误:

          

    UnLoaded事件:

      

    关闭Com口:

    总结:WPF之Window.Closing 、Window.Closed、FrameworkElement.Unloaded 

    三则的区别:

    Window.Closing 事件 :在调用 Close 之后立即发生,并且可进行处理以取消关闭窗口。

                                       可以处理 Closing 来检测窗口何时关闭(例如,何时调用 Close)。此外,可以使用 Closing 来阻止窗口关闭。若要阻止窗口关闭,可以                                            将CancelEventArgs 参数的 Cancel 属性设置为 true

                                       当调用 Close、单击窗口的“关闭”按钮,将引发 Closing 事件。

    代码示例:

         

       private void Window_Closing(object sender, CancelEventArgs e)
    
            {
    
                if (this.IsLoaded)
    
                {
    
                    MessageBoxResult result = MessageBox.Show("是否退出程序?", "提示", MessageBoxButton.YesNo, MessageBoxImage.Question);
    
                    if (result == MessageBoxResult.Yes)
    
                    {
    
                        //do something to record the shutdown event
    
                        DateTime shutDownDt = DateTime.Now;
    
                    }
    
                    else
    
                    {
    
                        e.Cancel = true;
    
                    }
    
                }
    
            }
    View Code

     

    Window.Closed 事件:在窗口即将关闭时发生。

                                     一旦引发此事件,就无法阻止窗口关闭。

    FrameworkElement.Unloaded事件:当从加载的元素的元素树中移除元素时发生。                          

                                                         在某些情况下是不会被触发的。比如说:Window在Closing的时候,是不会去触发它的子元素的Unloaded 事件。

                                                         Loaded和UnLoaded和UI有关。Closing和窗体本有关。

                                                         比如下窗口初始化的时候,如果窗口是隐藏的,那么Loaded是不会触发的。

                                                         因为它只在这个控件开始Visible的时候触发。同理,UnLoaded也是。

     

  • 相关阅读:
    Vue Highcharts 动态添加点
    JS Data(日期)对象
    VUE axios使用
    VUE 创建新项目
    Arduino ESP32 WiFi功能
    Arduino ESP8266 ESP8266mDNS.h
    Arduino ESP8266 ESP8266WebServer.h
    博客园定制自己的皮肤
    Arduino ESP32 BLE
    hadoop的伪分布安装(低版本)
  • 原文地址:https://www.cnblogs.com/527289276qq/p/5595798.html
Copyright © 2011-2022 走看看