美文网首页
改进关闭程序的机制,为之后储存数据铺路2018-12-06

改进关闭程序的机制,为之后储存数据铺路2018-12-06

作者: FDuiv | 来源:发表于2018-12-07 00:41 被阅读0次

1、今天查了下ManualResetEvent类的用法,他是可以在一个线程控制另一个的信使,

那样就可以用WaitOne,Set,Reset组合出某个线程在某个设定好的语句中进行阻塞,实现线程同步:

图1

因此关闭程序的时候,所有线程阻塞完毕后,可以进行存储数据操作:

图2

2、另外,似乎windows窗体程序都需要一个主窗口,然而为了更好的管理窗口,和优化程序速度,

我把每个窗口都用各自的线程运行,一个窗口一个线程:(主函数)

图3

但是这就涉及到了跨线程通讯问题,例如我要关闭一个窗口后其他窗口都关闭,

就需要在一个线程调用另一个线程的方法,

微软是禁止这样做的,然而这行代码:

Control.CheckForIllegalCrossThreadCalls = false;

可以忽略警告,但是存在即合理,CheckForIllegalCrossThreadCalls 这个属性的定义,它是一个static的,一旦修改,全局起作用。如果项目中其他人修改了这个属性,那么方案就失败了,要采取另外的方案;

所以我用了委托:

图4

两个窗口互相把关闭窗口的函数委托给对方,就可以做到关闭一个窗口后其他窗口都关闭的操作;

但是又有一个问题,相互调用的本质就是无限递归了,如何退出递归,很简单,让这个函数只运行一次:

图5

创建一个私有变量来记录;

当窗口状态为false的时候,关闭其他窗口的函数便不再运行;

上一篇日记:增加了一个删除功能和修复了一个bug2018-12-05

下一篇日记:准备更多2018-12-09

相关文章

  • 改进关闭程序的机制,为之后储存数据铺路2018-12-06

    1、今天查了下ManualResetEvent类的用法,他是可以在一个线程控制另一个的信使, 那样就可以用Wait...

  • EVM的数据储存机制

    ---作者:链三丰链接:https://zhuanlan.zhihu.com/p/130428779[https:...

  • 浏览器环境

    window对象 history对象 Cookie Web Storage:浏览器端数据储存机制 AJAX CORS通信

  • 数据类型和表达式

    一、数据的储存 1.整型数据的储存 ⑴储存格式:设每个整数占两个字节储存,最左边的(最高为)一位是符号位,0代表正...

  • iOS将文件切片储存并上传仿断点续传机制

    iOS将文件切片储存并上传仿断点续传机制 iOS将文件切片储存并上传仿断点续传机制

  • Core Data(Creating and Saving Ma

    在定义了托管对象模型并初始化应用程序的Core Data的堆栈(stack)之后,你就可以开始为数据储存创建对象。...

  • Storage

    Web Storage 1.1 概述 Web Storage是HTML5提供的一种新的浏览器端数据储存机制,它提供...

  • Android比iOS卡的原因0923

    内存管理 Java的内存管理使用了一个垃圾回收机制,机制规定了系统内存低于某个值是会选择性的关闭程序,而平常程序会...

  • 为自己铺路

    学校主要是以学习成绩论地位的,再加上一些学生活动也就把人定了位,家庭的力量体现不大,所以我们常常在走上社会之后才对...

  • 为你铺路

    看《学校2017》,看到罗恩好的爸爸对她解释自己在她去学校的路上铺路的原因 想想自己的爸爸,有些抱歉。 ...

网友评论

      本文标题:改进关闭程序的机制,为之后储存数据铺路2018-12-06

      本文链接:https://www.haomeiwen.com/subject/xgcacqtx.html