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

江湖救急,“多线程”问题,Why???

Master, 

     存在“12个错误”和“3个警告”啊。

代码如下: 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace MoreThread
{
   public class ETLProcess
    {
       public List<Thread> theadlists;//线程列表

       public ETLProcess()
       {   
       }

       public bool CreateThead(string ThreadID, string ETLTableName)
       { 
           bool  flag=false;
           try
           {
               Thread th = new Thread(new ParameterizedThreadStart(Do));

问题一:

错误 11
“Do”的重载均与委托“System.Threading.ParameterizedThreadStart”不匹配
E:\Test\MoreThread\MoreThread\ETLProcess.cs
22 39
MoreThread

       提示不匹配,这是怎么回事啊?   应该如何修改?
               th.IsBackground = true;
               th.Name = ThreadID;
               th.Start(ETLTableName);
               th.Sleep(10000);

问题二:

错误 12
无法使用实例引用来访问成员“System.Threading.Thread.Sleep(int)”;请改用类型名来限定它
E:\Test\MoreThread\MoreThread\ETLProcess.cs
26 16
MoreThread

这是怎么回事,应该怎样修改?



               theadlists.Add(th);
               flag = true;
           }
           catch (Exception ex)
           {
               flag = false;         
           }

           return flag;
       }

问题三:如何获取返回“Do”方法的参数呢???
       public string  Do(string  str)
       {
           return str;
       }



       public bool SuspendThead(int index)
       {
          bool flag = false;
          try
          {
              theadlists[index].Suspend();

问题四:

警告 3
“System.Threading.Thread.Suspend()”已过时:“"Thread.Suspend has been deprecated.  Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources.  http://go.microsoft.com/fwlink/?linkid=14202"”
E:\Test\MoreThread\MoreThread\ETLProcess.cs  49 15 MoreThread

提示“已过时”,怎么回事???     换用什么方法不过时呢???

              flag = true;
          }
          catch (Exception ex)
          {
              flag = false;
          }

          return flag;
       }


       public bool SuspendAbort(int index)
       {
           bool flag = false;
           try
           {
               theadlists[index].Abort();
               flag = true;
           }
           catch (Exception ex)
           {
               flag = false;
           }

           return flag;
       }
    }
} --------------------编程问答-------------------- "Do()"方法根据线程执行一遍,最后返回了一个参数这个参数应该如何获取,对吧??? --------------------编程问答-------------------- 1. 
 public string  Do(object  o)
{
   string str = (string)o;
   ....
}

2.
 Thread.Sleep(10000);

3.添加委托回调,建立线程有几种方法,其中有添加返回结果委托;
 给个例子,自己看
  public delegate string FuncHandle(int data1, int data2);
        FuncHandle fh ;
            
        private void BT_Temp_Click(object sender, RoutedEventArgs e)
        {
            fh = new FuncHandle(this.Foo);
            AsyncCallback callback = new AsyncCallback(this.AsyncCallbackImpl);
            fh.BeginInvoke(1, 3, callback, null);
        }

        public void AsyncCallbackImpl(IAsyncResult ar)   
        {
            string re = fh.EndInvoke(ar);
            MessageBox.Show(" " + ar.AsyncState);
        }   
  
        string Foo(int data1, int data2)   
        {   
            return " " + data1 + data2;   
        }  

4.过期问题不大,一定要搞定,就按照提示搞呗 --------------------编程问答-------------------- 我的天,最基本的语法都不会。

(1)
ParameterizedThreadStart的原型是
public delegate void ParameterizedThreadStart (
Object obj
)
你怎么给它传一个string Method(string)的方法。
(2)
静态方法用类名.方法名调用,用过Console.WriteLine()么???第一天学编程就应该知道的。

就这样还是学习下语法吧。 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 4 楼 chungehenyy 的回复:


Master,"委托回调"有这样的实例吗??? --------------------编程问答--------------------
引用 5 楼 starrycheng 的回复:
引用 4 楼 chungehenyy 的回复:

Master,"委托回调"有这样的实例吗???


木有~ 我也是新手,多看点基础的书吧,这样有些不懂的函数还能查MSDN。那就简单多了~真的~ --------------------编程问答-------------------- 线程不会在“宿主Winform”退出时,自动销毁吗???


必须在“Form1_FormClosed”时手动销毁吗???


怎样查看操作系统中跑动的“线程”呢???   任务管理器中只能查看“进程”啊。 --------------------编程问答-------------------- Master,也就是说一个“Access”数据库对应多个“连接和Session”的时候,即使它们之间没有表和记录之间的竞争。也只能按照先后顺序进行处理,并不能并发对吧??? --------------------编程问答-------------------- 委托的参数类型跟方法的参数类型不匹配 --------------------编程问答-------------------- 比较关心一个问题,“Access”到底支不支持“并发链接”??? --------------------编程问答-------------------- “Access”不是理论支持“255个并发连接”的吗???     还是“Access”并不是真的并发,而是这“255个并发连接”还是串行处理的,并没有并发??? --------------------编程问答-------------------- 添加委托回调,建立线程有几种方法,其中有添加返回结果委托;
给个例子,自己看

  public delegate string FuncHandle(int data1, int data2);//定义委托
        FuncHandle fh ;//定义委托变量
            
        private void BT_Temp_Click(object sender, RoutedEventArgs e)
        {
            fh = new FuncHandle(this.Foo); //为委托变量“事件”赋值
            AsyncCallback callback = new AsyncCallback(this.AsyncCallbackImpl);

问题一:“AsyncCallback”它的作用是什么呢???

问题二:“BeginInvoke”它的作用是什么呢???
            fh.BeginInvoke(1, 3, callback, null);
        }

        public void AsyncCallbackImpl(IAsyncResult ar)   
        {
            string re = fh.EndInvoke(ar);
            MessageBox.Show(" " + ar.AsyncState);
        }   
  
        string Foo(int data1, int data2)   //委托变量对应的方法 
        {   
            return " " + data1 + data2;   
        }   --------------------编程问答-------------------- 关于此“委托回调”的用法。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,