对端口Com1的访问被拒绝

对端口Com1的访问被拒绝,第1张

对端口Com1的访问被拒绝

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


问题:当我关闭模块,然后第二次打该模块时,d出如下错误”对端口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;

                }

            }

        }

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


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


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


在某些情况下是不会被触发的。


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


Loaded和UnLoaded和UI有关。


Closing和窗体本有关。


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


因为它只在这个控件开始Visible的时候触发。


同理,UnLoaded也是。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/589519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存