• 对端口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也是。

     

  • 相关阅读:
    centos6.3 配置防火墙,开启80端口、3306端口
    Unable to run man pages on Centos 6
    1. 信息系统基础知识
    2. 软件工程
    CommonJs
    软考资料
    Node.js资料
    qyqt5(一)
    tf源码中的object_detection_tutorial.ipynb文件
    分类结果的评价指标
  • 原文地址:https://www.cnblogs.com/527289276qq/p/5595798.html
Copyright © 2020-2023  润新知