菜鸟请教个多线程问题!【紧急啊~】 本帖最后由 ownorg 于 2013-05-06 12:02:50 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把one,two写在一起不就可以了?Thread one_tow = new Thread((ThreadStart)delegate{ outputone(); outputtwo();}); 如果是one线程”执行完了“ 那么你可以在执行完了之后加上two线程的start方法 是这样的:one线程我是想要返回个cookie!two线程是当点击按钮A的时候引用该cookie,three线程是点击按钮B的时候可以再次调用该cookie.因为在访问http延时过长,UI会无响应,所以想到了多线程!所以必须在one线程返回了cookie时,B线程才能调用啊,不然cookie为空的! 直接用一个线程应该可以搞定public void outputone() { while(cookie不为空) { 获取cookie sleep(1000); } 处理cookie} //testb不为空,outputtwo才执行! //outputone和outputtwo为http请求! public static string testb = null; public void outputone() { Thread.Sleep(3000);//模拟延时 textarea.Dispatcher.Invoke(new Action(() => { testb = "aaa"; textarea.Text += "cookie捕获完成!" + "\n"; })); } public void outputtwo() { textarea.Dispatcher.Invoke(new Action(() => { if (string.IsNullOrEmpty(testb)) { textarea.Text += "数据为空,无法执行!" + "\n"; } else { textarea.Text += "执行完成!" + "\n"; } })); } private void Button_Click(object sender, RoutedEventArgs e) { Thread one = new Thread(new ThreadStart(outputone)); Thread two = new Thread(new ThreadStart(outputtwo)); one.Start(); two.Start(); } 为什么不用任务这么好的东西 Task t = new Task(() => {... }); t.Start(); t.ContinueWith(()=>{...}); 设个全局变量,在one中改变状态,two总如果状态未变循环等待,直到状态改变,two执行具体内容 one.Start(); one.Join(); two.Start(); [高难度提问] 如何用 C# 自动输入自己的密码到银行控件里去登陆网上银行? POP3 服务设置 求助:C#.NET中DATAGRID的TABLESTYLE设置无效 vs.net中有自带的加密控件吗?还是要另外去找? 初学asp.net 疑问日记一 文件读取问题 新手请教问题! 在textbox中输入查询条件将查询结果绑定到gridview .NET打印控件在98下引起异常!得到微软专家提供的文档,但还有问题。有一些忠告,有兴趣的请进。 给兄弟推荐一下学习代码的好教程,谢谢了 求教大神啊。~~~感激不尽 求助,使用C#如何实现MP3转换工具
把one,two写在一起不就可以了?
Thread one_tow = new Thread((ThreadStart)delegate{
outputone();
outputtwo();
});
one线程我是想要返回个cookie!
two线程是当点击按钮A的时候引用该cookie,
three线程是点击按钮B的时候可以再次调用该cookie.因为在访问http延时过长,UI会无响应,所以想到了多线程!
所以必须在one线程返回了cookie时,B线程才能调用啊,不然cookie为空的!
public void outputone()
{
while(cookie不为空)
{
获取cookie
sleep(1000);
}
处理cookie
}
//testb不为空,outputtwo才执行! //outputone和outputtwo为http请求! public static string testb = null; public void outputone()
{
Thread.Sleep(3000);//模拟延时
textarea.Dispatcher.Invoke(new Action(() =>
{
testb = "aaa";
textarea.Text += "cookie捕获完成!" + "\n";
}));
} public void outputtwo()
{
textarea.Dispatcher.Invoke(new Action(() =>
{
if (string.IsNullOrEmpty(testb))
{
textarea.Text += "数据为空,无法执行!" + "\n";
}
else
{
textarea.Text += "执行完成!" + "\n";
}
}));
} private void Button_Click(object sender, RoutedEventArgs e)
{
Thread one = new Thread(new ThreadStart(outputone));
Thread two = new Thread(new ThreadStart(outputtwo));
one.Start();
two.Start();
}
Task t = new Task(() => {... });
t.Start();
t.ContinueWith(()=>{...});
one.Join();
two.Start();