窗体关闭了,但端口连接还是被占用,如何解决?[内详]

jimodeduzou 2010-09-30 11:39:51
情况是这样:
PC 通过 USB 连接硬件.

用了这个硬件的SDK包.
程序其中一部分大致架构如下:
1:Form1 按钮 打开 Form2
2:Form2 的构造函数中添加了自动连接硬件(SDK.AutoConnection()), 成功则显示Form2, 连接异常则关闭关闭Form2显示(.Close() or Dispose()),此时 Form1 保持显示.
3:若步骤2 连接异常,修正硬件连接后, 再次Form1的按钮打开, 这个时候会因为上次只是关闭了Form2 没有关闭端口而显示异常....

所以想请教各位哥哥姐姐, 我现在要如何解决呢?
SDK中并无释放连接的函数, 只有一个自动连接.AutoConnection(), 还有一个.GETPORTID(),就没有相关的了...
我还能如何做呢?
...全文
219 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
嗯,我在#3中没有写清楚,不是“static方法”,而是“static初始化方法”,既.cctor。
phil999 2010-10-01
  • 打赏
  • 举报
回复
在form2里专门写个函数,如果端口开着,不要重新打开
phil999 2010-10-01
  • 打赏
  • 举报
回复
Form2 的构造函数中添加了自动连接硬件

这种事最好别在构造函数里干,试试在 Load 事件里
jimodeduzou 2010-10-01
  • 打赏
  • 举报
回复
实在不行的话, 有没有其他编程的办法 实现上面的那种功能模式?
jimodeduzou 2010-10-01
  • 打赏
  • 举报
回复
他的 .AutoConnection()是没有返回的..居然方法的实现也看不到..
如果连接出错或者失败,就只能把整个应用程序关了, 重新打开才可以, 否则就就会一直弹出端口占用的提示.
主要是现在我用的是Form1 打开的Form2, .AutoConnection()在Form2的构造函数里面,失败的话 要连Form1关闭了 重启程序才能解决...

我有没有办法根据 .GETPORTID()返回string类型的PORTID,来关闭端口或释放这个占用?
  • 打赏
  • 举报
回复
如果这个api根本没有返回,那么写到class Form2的static方法中就行了。
鸭梨山大帝 2010-09-30
  • 打赏
  • 举报
回复
这个貌似是他SDK的问题吧?

你用SDK.AutoConnection()打开,失败了却没有提供Close的方法?
  • 打赏
  • 举报
回复
SDK.AutoConnection() 只应该针对(或者赋值给)一个static的变量。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧