- 浏览: 204637 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (231)
- C++学习 (41)
- vc学习 (25)
- vc异常 (4)
- Flex (2)
- Ext (0)
- java学习笔记 (15)
- mysql学习笔记 (1)
- ibatis学习笔记 (7)
- struts1学习笔记 (1)
- hibernate学习笔记 (3)
- javascript学习笔记 (8)
- eclipse快捷键 (2)
- 英语学习 (1)
- cmd (1)
- eclipse 配置 (2)
- 其他 (4)
- JAVASE (34)
- firefox (1)
- linux (8)
- Apache (6)
- cms (22)
- jsuc (10)
- html (3)
- css (1)
- 作图 (2)
- vs2012 (2)
- 编码转换 (12)
- work_unicode (1)
- work_webbrowser (1)
- work_trade_quotes_login (1)
- c#学习 (38)
- wpf学习 (31)
- wpf快速学习 (1)
- VB学习 (1)
- NSIS (4)
- log4cpp (3)
- 学习web (1)
- 经验 (1)
- c_汇编 (1)
最新评论
Application.DoEvent使用(转载)//msdn,有这样一个例子:
在private void openFileDialog1_FileOk方法中使用了此方法,况且在紧跟其后有个延时,延时了2秒,不明白此句的用意。多次运行程序发现使用了Application.DoEvent()后图片能够实时显示,文件框在隔2秒后关闭,屏蔽Application.DoEvent()后发现图片不能实时显示,在隔两秒文件框关闭时显示图片。此时明白了Application.DoEvent()的用意,是使界面能够实时刷新,感觉有点多线程的意思。
继续查资料查看对此语句的详细介绍,下面是从别人博客中摘抄的:
简介:
其实doEnvents很简单,就是暂停一下当前模块Code,好让你程序可以响应其它事件、消息……
响应完其它事之后又回去继续执行刚才的Code (允许窗体在忙时响应 UI 输入)
生动描述:
程序对CPU说,哥们,你去干别的事情吧
好处或意义:
全部显示,处理当前在消息队列中的所有Windows消息.
在大量循环中使用可以有效避免假死机现象
注意:
调用该方法可以在某消息引发事件时导致重新输入代码.
额外了解:
Window窗体运行机制:
当运行Windows窗体时,它将创建新窗体,然后该窗体等待处理事件
该窗体在每次处理事件时,均将处理与该事件关联的所有代码。
所有其他事件在队列中等待。
在代码处理事件时,应用程序并不响应。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xochenlin/archive/2008/10/31/3187129.aspx
当我们在事件里面进行大量的循环操作时,windows将等待循环结束。此时界面是得不到响应的。为了在WinForm界面上实时地显示每次循环得到的结果,可以用.net提供的Application.DoEvents();
private void InitializePictureBox() { this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; this.pictureBox1.Location = new System.Drawing.Point(72, 112); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(160, 136); this.pictureBox1.TabIndex = 6; this.pictureBox1.TabStop = false; } private void InitializeOpenFileDialog() { this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); // Set the file dialog to filter for graphics files. this.openFileDialog1.Filter = "Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" + "All files (*.*)|*.*"; // Allow the user to select multiple images. this.openFileDialog1.Multiselect = true; this.openFileDialog1.Title = "My Image Browser"; } private void fileButton_Click(System.Object sender, System.EventArgs e) { openFileDialog1.ShowDialog(); } // This method handles the FileOK event. It opens each file // selected and loads the image from a stream into pictureBox1. private void openFileDialog1_FileOk(object sender, System.ComponentModel.CancelEventArgs e) { this.Activate(); string[] files = openFileDialog1.FileNames; // Open each file and display the image in pictureBox1. // Call Application.DoEvents to force a repaint after each // file is read. foreach (string file in files ) { System.IO.FileInfo fileInfo = new System.IO.FileInfo(file); System.IO.FileStream fileStream = fileInfo.OpenRead(); pictureBox1.Image = System.Drawing.Image.FromStream(fileStream); Application.DoEvents(); fileStream.Close(); // Call Sleep so the picture is briefly displayed, //which will create a slide-show effect. System.Threading.Thread.Sleep(2000); } pictureBox1.Image = null; }
在private void openFileDialog1_FileOk方法中使用了此方法,况且在紧跟其后有个延时,延时了2秒,不明白此句的用意。多次运行程序发现使用了Application.DoEvent()后图片能够实时显示,文件框在隔2秒后关闭,屏蔽Application.DoEvent()后发现图片不能实时显示,在隔两秒文件框关闭时显示图片。此时明白了Application.DoEvent()的用意,是使界面能够实时刷新,感觉有点多线程的意思。
继续查资料查看对此语句的详细介绍,下面是从别人博客中摘抄的:
简介:
其实doEnvents很简单,就是暂停一下当前模块Code,好让你程序可以响应其它事件、消息……
响应完其它事之后又回去继续执行刚才的Code (允许窗体在忙时响应 UI 输入)
生动描述:
程序对CPU说,哥们,你去干别的事情吧
好处或意义:
全部显示,处理当前在消息队列中的所有Windows消息.
在大量循环中使用可以有效避免假死机现象
注意:
调用该方法可以在某消息引发事件时导致重新输入代码.
额外了解:
Window窗体运行机制:
当运行Windows窗体时,它将创建新窗体,然后该窗体等待处理事件
该窗体在每次处理事件时,均将处理与该事件关联的所有代码。
所有其他事件在队列中等待。
在代码处理事件时,应用程序并不响应。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xochenlin/archive/2008/10/31/3187129.aspx
当我们在事件里面进行大量的循环操作时,windows将等待循环结束。此时界面是得不到响应的。为了在WinForm界面上实时地显示每次循环得到的结果,可以用.net提供的Application.DoEvents();
发表评论
-
byte数组直接输出
2016-07-19 11:38 1249byte数组直接输出 BitConverter.ToStrin ... -
wfi:WindowsFormsHost焦点设置
2016-07-05 17:56 580<wfi:WindowsFormsHost> ... -
x:Name
2016-04-25 10:44 450由于“Dameer”是在同一程序集中实现的,您必须设置 x:N ... -
WindowsFormsHost的使用注意
2016-04-25 10:24 1347一使用 1 引用 2 xmlns:wfi ="clr ... -
TextBox滚动条
2016-04-22 16:51 658<TextBox Grid.Row="1& ... -
TextBlock滚动条
2016-04-22 16:49 454<ScrollViewer Name="s ... -
C#_WPF_WPF用户控件库
2016-04-12 11:37 799新建项目》window桌面》WPF用户控件库 -
DependencyProperty.UnsetValue_WPF涉及到资源的嵌套引用,被引用的资源要定义在引用的资源前面
2015-10-27 15:09 1992错误 1 “{DependencyProperty.Unset ... -
string格式的日期时间字符串转为DateTime类型
2015-08-05 14:22 964string格式的日期时间字符串转为DateTime类型 / ... -
checkbox
2015-07-28 17:18 554private void Chec ... -
自定义DataGrid样式
2015-06-26 22:03 747<ResourceDictionary xmlns=&q ... -
x:Name x:Key Name区别
2015-06-25 15:40 598x:Name x:Key Name区别 1、x:Key 只 ... -
work_代码添加
2015-06-23 17:15 507<UserControl x:Class=" ... -
FindName和VisualTreeHelper
2015-06-19 13:23 756int iCount = this.dataGridCan ... -
理解WPF中的视觉树和逻辑树(转载)
2015-06-19 13:00 586理解WPF中的视觉树和逻辑树 理解WPF中的 ... -
理解WPF中的视觉树和逻辑树(转载)
2015-06-19 12:58 1681理解WPF中的视觉树和逻 ... -
GetEnumerator
2015-06-19 12:39 653IEnumerator enumerator = this ... -
资源文件获取配置
2015-06-18 16:03 369object obj = Application.Curren ... -
Pack URI
2015-06-18 15:41 686主要用来定位 资源文 ... -
wpf学习之ObservableCollection<T>相关知识
2015-04-23 11:10 3307本篇学习了ObservableCollection<T& ...
相关推荐
在.NET框架中,`System.Windows.Forms.Application.DoEvents()` 方法是一个非常特殊的函数,它将控制权暂时交给Windows消息队列,处理任何等待处理的事件。当程序执行耗时的操作(如数据库查询或大型文件处理)时,...
但是,需要注意DoEvent的使用场景和限制,以便更好地使用。 在实际应用中,DoEvent可以用在以下场景: 1. 耗时操作:在耗时操作中调用DoEvent,可以防止界面停止响应。 2. 实时响应:DoEvent可以实时响应文本框中...
- 在 Delphi 中,当需要应用程序在处理其他任务的同时也能响应用户操作时,使用 `Application.DoEvents` 可以确保应用程序保持响应状态。 #### 题目三:ListBox 和 ComboBox 更新技巧 1. **问题:**在 Delphi 中...
虽然使用Dispatcher.Invoke 和模拟winform 里面的DoEvent 但是运行中关闭还是会有异常,而且耗资源高; 第二种 : DispatcherTimer 失败:UI还是会卡顿; 第三种 : Timer 建议使用、资源占用少,关闭启动自如。
这时,可以借鉴VB的`doevents`思想,通过调用`Sleep(0)`或`Application::ProcessMessages()`(如果是MFC环境)来短暂地让出控制权,使GUI能够处理任何积压的事件。 以下是一个简化的示例,展示了如何在执行长时间...
例如,在Java中,可以使用`SwingUtilities.invokeLater()`方法来在事件调度线程(也就是主线程)上安全地更新UI;在Python的Tkinter库中,可以使用`after()`方法来安排在主线程的事件循环中执行函数。 在实际应用中...
在Java中,实现回调机制的方式有多种,但最常见的方式是使用接口回调。我们可以创建一个回调接口,例如: ```java public interface CallBack{ public void doEvent(); } ``` 然后,我们可以创建一个实现这个接口...
3. **异步事件处理**:虽然不是直接的多线程,但PB提供了异步事件机制,通过调用`DoEvent`函数,可以在不阻塞主线程的情况下处理后台任务。 在“scanning”这个压缩包文件名中,可能暗示了这个示例代码涉及的多线程...
标题中的“DoEvents”是一个在Visual Basic (VB) 和某些其他Microsoft开发环境中广泛使用的函数,它的主要作用是在程序执行长时间运行任务时,允许系统处理其他的事件。这在编程中尤其重要,因为它能确保用户界面...
1. `doevent.m`:这可能是处理事件的函数,例如用户交互或系统事件,在图形用户界面(GUI)应用中常见。 2. `editsets.m` 和 `editbase.m`:可能涉及到数据编辑和管理功能,可能包括数据输入、修改和保存操作。 3. `...
之后,你可以使用 `doEvent` 方法触发状态转换,例如 `fsm:doEvent("warn")` 将状态从 "green" 转换到 "yellow"。同时,状态机还提供了 `isReady`、`getState`、`isState`、`canDoEvent`、`cannotDoEvent`、`...
这个过程在`doEvent`函数中完成。 ```cpp if (e.type == Event::MouseButtonPressed) { if (e.key.code == Mouse::Left) { click++; pos = Mouse::getPosition(*window) - offset; } } ``` 3. **方块交换**:...
#### Doevent 事件发生 `DoEvents`语句用于让程序暂时放弃CPU控制权,允许其他事件(如用户输入)被处理。 #### Doloop 循环跳 `Do...Loop`结构用于创建循环,可以根据不同的条件无限次或有限次地重复执行某段代码...
- **monster/areamonster/killmonster/killmonsterall/doevent/donpcevent**:用于召唤、杀死怪物和触发事件。例如,`monster monster_name;` 在当前位置召唤怪物 `monster_name`。 这些指令使游戏世界变得更加生动...