01 2018 档案
摘要:多年以前,在我的刚接触编程语言时,我遇到了一个超出能力范围的类型设计问题。这个问题困扰我多年,让我寝食难安。原因并不是因为这个问题有多复杂,恰恰相反,让我纠结的是,这个问题看起来很简单,而我却找不到一个优秀的解决方法。 俗话说踏破铁鞋无觅处,得来全不费工夫。苦苦求索而不得的多年之后,我从一次系统设计
阅读全文
摘要:设计模式是面向对象编程的一个非常精彩的部分。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性,它能帮助我们将应用组织成容易了解,容易维护,具有弹性的架构。本文通过一个简单的案例来讲述策略模式在地铁票价系统中的应用。
阅读全文
摘要:最近我正在处理C#中关于timeout行为的一些bug。解决方案非常有意思,所以我在这里分享给广大博友们。
我要处理的是下面这些情况:
- 我们做了一个应用程序,程序中有这么一个模块,它的功能向用户显示一个消息对话框,15秒后再自动关闭该对话框。但是,如果用户手动关闭对话框,则在timeout时我们无需做任何处理。
- 程序中有一个漫长的执行操作。如果该操作持续5秒钟以上,那么请终止这个操作。
- 我们的的应用程序中有执行时间未知的操作。当执行时间过长时,我们需要显示一个“进行中”弹出窗口来提示用户耐心等待。我们无法预估这次操作会持续多久,但一般情况下会持续不到一秒。为了避免弹出窗口一闪而过,我们只想要在1秒后显示这个弹出窗口。反之,如果在1秒内操作完成,则不需要显示这个弹出窗口。
这些问题是相似的。在超时之后,我们必须执行X操作,除非Y在那个时候发生。
阅读全文
摘要:你是否曾经有过这种感觉:即使代码没有改变,Visual Studio也总是在重新生成项目?
阅读全文
摘要:创建响应式WinForm应用程序并不那么简单。 响应式布局,我们在此指的是在不同屏幕分辨率下的可用性。 对于WinForm应用程序,我们需要明确地根据分辨率来调整控件的大小和重新定位。 虽然在使用WPF时有相关的实践应用,通过使用控件的docking和anchoring,或使用panels等方法,但本文提供了一种将响应式应用于WinForm应用程序的不同方法。
阅读全文
摘要:网站之前运行一直很正常,但有一次用户在导入格式为xls的excel文件,发生了错误,跟踪错误后抛出如下的异常: 错误提示: 未处理System.Data.OleDb.OleDbException HResult=-2147467259 Message=外部数据库驱动程序 (1) 中的意外错误。 原因
阅读全文