黄聪:C# 使用线程你可能不知道的问题
2010-03-27 18:35
525 查看
前些天有个朋友问我,他在做WinForm 程序,其中使用到了线程。
当时我听到线程我就懵了,其一 我很久都没有使用过线程了,其二 线程说实话有些难,其三 遇到线程稀奇古怪的问题我真的很难回答。当时我就模糊的回答了他一下,就这样勉强的回避了他的问题,因为之前我总是不断的去回避线程这个问题,你说线程简单也简单,你说难也难。与我来说线程真的是个麻烦事,我一直都是采用回避政策,今天我查阅了之前自己写过的一个WinForm 扫雷游戏,其中就使用过线程。
1.在WinForm 中使用线程和定时器控制动画
代码
1 public void ExitApplication()
2 {
3 if (this.panelButton.Controls!=null)
4 {
5 this.panelButton.Controls.Clear();
6 }
7
8 for(int i=0;i<1000;i++)
9 {
if(this.Opacity<0.1)
{
this.ExitProcess();
Application.Exit();
}
this.Opacity=this.Opacity-0.004;
Thread.Sleep(20);
}
this.main.Dispose();
}
其实这个效果就是控制窗体的透明度,渐变效果。这也是线程哦。
当时我听到线程我就懵了,其一 我很久都没有使用过线程了,其二 线程说实话有些难,其三 遇到线程稀奇古怪的问题我真的很难回答。当时我就模糊的回答了他一下,就这样勉强的回避了他的问题,因为之前我总是不断的去回避线程这个问题,你说线程简单也简单,你说难也难。与我来说线程真的是个麻烦事,我一直都是采用回避政策,今天我查阅了之前自己写过的一个WinForm 扫雷游戏,其中就使用过线程。
1.在WinForm 中使用线程和定时器控制动画
代码
1 public void ExitApplication()
2 {
3 if (this.panelButton.Controls!=null)
4 {
5 this.panelButton.Controls.Clear();
6 }
7
8 for(int i=0;i<1000;i++)
9 {
if(this.Opacity<0.1)
{
this.ExitProcess();
Application.Exit();
}
this.Opacity=this.Opacity-0.004;
Thread.Sleep(20);
}
this.main.Dispose();
}
其实这个效果就是控制窗体的透明度,渐变效果。这也是线程哦。
相关文章推荐
- C# 使用线程你可能不知道的问题
- c#中使用多线程访问winform中控件的若干问题 解决线程间操作无效: 从不是创建控件的线程访问它
- 无比奇怪的问题,Runtime报错,程序仍可运行(有可能是线程崩溃,但主程序不崩溃,线程崩溃可能是因为锁使用不当引起的)
- C#中使用存储过程可能出现的问题
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- 黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误
- C# 子线程使用主线程中的控件问题
- 黄聪:C#使用能够foreach对hashtable、List遍历时“集合已修改;可能无法执行枚举操作。”错误
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- (转)c#(wince)中使用多线程访问winform中控件的问题
- C#使用队列(Queue)解决简单的并发问题
- C# 线程知识--使用Task执行异步操作
- C#中使用List<struct>的问题
- C#中用Invoke调用控件方法和BeginInvoke线程使用方法
- C#使用回溯法解决背包问题实例分析
- 在C#中使用SerialPort类实现串口通信 遇到多线程问题
- 【转】C#子线程使用FolderBrowserDialog的问题延伸
- C# 解决使用Process.Start()函数打开url被360拦截问题
- 七大你可能不知道的 Chrome 使用技巧