| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 783 人关注过本帖
标题:关于线程??
只看楼主 加入收藏
kdlihao
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2006-3-17
收藏
 问题点数:0 回复次数:10 
关于线程??

关于线程的问题?请问一下,我在线程结束后,自动关闭窗体,但是我就是弄不清楚在关闭窗体事件应该写在那里,
public partial class Form1 : Form
{
Thread a;
private int p = 0;
delegate void ChangeValue(int value);
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

a = new Thread(new ThreadStart(all_count));
a.Start();
}
private void all_count()
{
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(1);
p = p + 1;
progressBar1.BeginInvoke(new ChangeValue(Change1), (progressBar1.Value + 1) % 100);
}
a.Abort();
}
private void Change1(int value)
{
progressBar1.Value = value;

搜索更多相关主题的帖子: 线程 
2007-03-12 13:09
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 

这样好像会出现交叉线程错误的问题.我之前用了一下很土而且耗资源的方法解决了这问题.
<.NET设计模式>里好像有介绍相关的处理模式,不过还没研究.你研究一下,拿出来分享分享.


实践、学习、再实践、再学习......
2007-03-12 13:41
kdlihao
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2006-3-17
收藏
得分:0 
晕!快点大家帮帮忙呀1我现在等着用呀

2007-03-12 13:52
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 

这是由于线程是在From里创建的,而线程执行的代码确要尝试把From关闭.也就是所谓的交叉线程错误.
我以前的解决方法是在Program.cs里设置一下全局静态布尔变量,初值为真.线程要关闭窗口时将这个布尔变量置为假。主线程隔几百毫秒就判断一次布尔变量的值,为假时就关闭窗口。


实践、学习、再实践、再学习......
2007-03-12 14:04
kdlihao
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2006-3-17
收藏
得分:0 

能说的再详细一下吗?谢谢!还不是很明白!嘿嘿


2007-03-12 15:02
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 
public static bool ifrun = true;

static void Main()
{
//intial Login and run
Form1 = new Form();
Form1.Show();
JudgeRun();
Application.Run();
}

static void JudgeRun()
{
bool deside = true;
while (deside)
{
Application.DoEvents();
if (!ifrun)
{
deside = false;
Form1.Close();
}
else
{
...
}
}
}

实践、学习、再实践、再学习......
2007-03-12 17:54
cyyu_ryh
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1899
专家分:176
注 册:2006-10-21
收藏
得分:0 
关闭窗体的代码
a.Abort();
写在这个后面..

有事无事都密我. MSN: cyyu_ryh@hotmail.co.jp E-mail: cyyu_ryh@
2007-03-12 19:37
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
用个委托就行了

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2007-03-13 16:39
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 

委托似乎也不行.我之前用事件触发来做也会出现交叉线程的错误.


实践、学习、再实践、再学习......
2007-03-13 22:28
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
有空试试

不然就按楼上方法用个变量来通信

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2007-03-14 09:44
快速回复:关于线程??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017366 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved