none
Thread t = new Thread(DealFiles.saveMessage);出错什么原因? RRS feed

答案

  • 与Thread最匹配的重载方法具有一些无效参数。saveMessage是DealFiles类的静态方法。saveMessage这一段没什么关系,就是写文件,不另开线程的话正常运行

    Thread.Start方法接收的委托参数必须是ThreadStartParameterizedThreadStart类型之一,换言之,你的DealFiles.saveMessage()方法必须为 void() 或 void(object) 形式。如 public static void SaveMessage() 或  public static void SaveMessage(object o)


    共同努力,共同提高
    kaedei#live.cn My BLOG

    2012年5月3日 1:08
  • 委托本身是可以有返回值的,但是对于多线程来说,返回值并没有意义。

    因为新线程与其创建者不在同一个线程中,是无法保证返回值(对象)是线程安全的,而且创建者无法得知新线程何时退出,所以无法像当前线程调用委托那样简单获取委托的返回值。

    这种情况下变通的方法是创建一个包装类,然后通过参数传递到委托的方法中,在方法中修改包装类中的某个值。创建者通过检测这个值的变化以获取线程运行的结果。


    共同努力,共同提高
    kaedei#live.cn My BLOG

    2012年5月3日 2:39

全部回复