我无法忍受线程和计时器之类的拖放控件。这些控件只是感觉与它们存在的实际本质相去甚远。拖动一个线程?我希望拖拉机在他们这样做之前就能理解封面下发生的事情。
这些抽象是否远离金属?他们是在帮助还是伤害程序员?
答案 0 :(得分:6)
我不认为他们是邪恶的。删除表单上的控件只是说“新线程()”或“新计时器()”的另一种方式,许多程序员也不会真正理解它。
简单的解决方案并不总能满足您的需求,但是当他们这样做时,使用它们有什么问题?
但是,如果使用拖放的东西是唯一的方式,程序员知道如何做事,那不是一个非常好的程序员。
答案 1 :(得分:4)
我认为他们正在伤害程序员。拖放不是编程。
我可能正在使用宽刷进行绘画,但我发现令人震惊的是,我遇到的大多数Web应用程序开发人员(特别是.NET WebForm开发人员)在HTTP模型方面完全缺乏知识,基本的东西是这样的由于他们遇到的抽象,POST和GET不在他们的掌握之中。
This article是一本非常有趣的读物,完全反映了我的观点。
答案 2 :(得分:3)
就个人而言,我没有理由在我的职业生涯中使用多线程编程,尽管我确实在大学里学过它。所以Timer控件对我来说是一个很好的帮助因为我不想学习如何在.NET中进行多线程编程只是为了获得一些简单的功能。
答案 3 :(得分:2)
“Drag'n Drop”意味着使用IDE的WYSIWYG部分?
我在VB6和Dreamweaver代码上工作,所以我会选择“非常好”,如果是这样的话。
答案 4 :(得分:2)
BackgroundWorker增加了真正的价值。它通过使用委托调用手动执行线程,然后使用Control.Invoke将结果封送回UI线程,从而生成更清晰的代码(通过使用事件模型)。
我已经通过测试Control.InvokeRequired而没有测试Control.IsHandleCreated而被烧毁。当代码已在UI线程上执行时,Control.InvokeRequired将返回false,但如果控件不存在,则返回false。如果我会使用BackgroudWorker,我可能不会遇到这个问题。
答案 5 :(得分:1)
(从问题上的.Net标签开始,我假设在讨论拖放控件时我们正在讨论Visual Studio设计人员。)
我不认为它们是邪恶的,但我同意它并不总是最合适的组件隐喻(如Thread)。
对我来说,控制的拖放并不是“这是一个远离金属的UI组件”的说法。相反,它是一个声明,我“希望设计师为我管理这个组件的生命周期。”从这个角度来看,通过拖放添加像后台工作者这样的东西是非常明智的。实际上,这是我喜欢的方法,用于将任何IDisposable对象包含为(例如)UserControl或Form的成员。通过这种方式,我可以处理codegen,而且我可以更多地关注我的代码做什么而不是布线。
答案 6 :(得分:0)
我认为基本的长期运行;或者一种情况下,后台工作者控制对于这些情况是完美的。如果您正在做比这更先进的事情,那么您应该研究线程和多线程设计的高级用法。
因此,为了快速启动并运行线程,它不会受到伤害;但是要将它作为唯一的方法来进行线程化,那么它肯定会伤害程序员。
答案 7 :(得分:0)
它是一个UI隐喻的东西。
你拖放它应该是一个“东西”文件,文件或任何其他“东西”容器,垃圾箱,碎纸机,打印机或其他任何东西。
将线程/任务拖放到计时器会丢失基本的mataphor并感觉不对。
对于像“启动计时器”这样的“动词”,右击和下拉更好。
答案 8 :(得分:0)
好消息是,自.NET以来,拖放控件不需要使用drap和drop风格。我个人认为,虽然拖放对于原型设计是可行的,但是您的要求越复杂,您就越有可能找到设计师的限制性和阻碍性。一个简单的示例是在调整包含窗口大小时应该展开的表单。你很快发现自己编写了如此多的代码,你最好完全放弃设计师。
在我们讨论设计器中的错误之前,例如,删除所有事件......