当前位置:编程学习 > C#/ASP.NET >>

菜鸟请教个多线程问题!【紧急啊~】

--------------------编程问答--------------------
引用 楼主 ownorg 的回复:
...
我要按one,two的顺序输出!


把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
} --------------------编程问答--------------------

 //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();
        }
--------------------编程问答-------------------- 1.信号灯
2.beginInvoke --------------------编程问答-------------------- 为什么不用任务这么好的东西
  Task t = new Task(() => {... });
            t.Start();
            t.ContinueWith(()=>{...}); --------------------编程问答-------------------- Just begin! --------------------编程问答-------------------- 设个全局变量,在one中改变状态,two总如果状态未变循环等待,直到状态改变,two执行具体内容 --------------------编程问答--------------------             one.Start();
            one.Join();
            two.Start();
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,