接之前的demo创建的子线程,咱们对应两中创建线程的方式分别对其进行资源的释放和关闭。
需要注意的是,关闭线程的时候需要注意自己线程的资源释放,例如自己线程中如果有socket的话需要先在对象中将socket进行关闭,然后再执行线程关闭的操作,这样再次创建和绑定socket的时候才不会出现异常。
一、关闭使用moveThread()创建的线程
思路:咱们使用信号的槽的方式,点按钮触发关闭信号,在接收对象中先关闭接收socket ,然后触发线程终止信号,最后关闭线程
步骤1:在主窗体类中创建关闭信号和关闭线程槽处理函数
步骤2:在接收对象中创建socket关闭处理槽函数和关闭线程信号
步骤3:连接信号
步骤4:触发信号设置
注意:QThread的关闭必须在创建QThread的对象里面关闭!!大家需要注意关闭对象是谁!!
二、关闭使用继承QThread的方式创建的线程
当前方式由于所有的逻辑处理都是在子线程里面,就只需要在外内部提供信号,在线程里面关闭socket和关闭信号就好了
步骤1:在mainwindow中创建关闭信号和对应线程关闭槽处理函数
步骤2:在线程中擦创建关闭槽处理函数
步骤3:连接关闭信号:
步骤四:开启信号
测试结果:
这样就可以每次断开后重新再次绑定和创建啦!!