菜鸟请教个多线程问题!【紧急啊~】
--------------------编程问答--------------------把one,two写在一起不就可以了?
Thread one_tow = new Thread((ThreadStart)delegate{
outputone();
outputtwo();
});
--------------------编程问答-------------------- 有顺序为什么要用多线程呢?~ --------------------编程问答-------------------- 是啊,有顺序,为嘛要多线程,2个处理放到一个线程中,就满足你要求了。 --------------------编程问答-------------------- 如果是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
} --------------------编程问答--------------------
--------------------编程问答-------------------- 1.信号灯
//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();
}
2.beginInvoke --------------------编程问答-------------------- 为什么不用任务这么好的东西
Task t = new Task(() => {... });
t.Start();
t.ContinueWith(()=>{...}); --------------------编程问答-------------------- Just begin! --------------------编程问答-------------------- 设个全局变量,在one中改变状态,two总如果状态未变循环等待,直到状态改变,two执行具体内容 --------------------编程问答-------------------- one.Start();
one.Join();
two.Start();
补充:.NET技术 , C#