在另一个线程中使用参数运行另一个类的方法

时间:2012-03-27 09:01:01

标签: c# wpf

using System;

public class ImageConverter
{
    public void button1_Click(Object sender, RoutedEventArgs e)
    {
       string filename=null;
       SendImageToPlayer send = new SendImageToPlayer();
       //send.ReadImageFile(filename);
       Thread t = new Thread(new send.ReadImageFile);
       uint ret=send.ErrorCode;
    }
}

public class SendImageToPlayer
{
    ...
    public void ReadImageFile(string PfileName)
    {
       //something
    }
    ...
}

上面显示的代码不起作用。我想在单独的线程中运行ReadImageFie。我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

您应该在创建线程后启动它:t.Start();

您还应该考虑使用Task Parallel Library

哦,哦,我刚注意到你想传递一个参数。您可以在启动线程之前在SendImageToPlayer实例中设置属性,或者将object传递给ReadImagefile函数。但实际上,使用TPL,它会更好。

答案 1 :(得分:1)

在SendImageToPlayer类中引入属性FileName,并在启动线程之前设置它。

using System;

public class ImageConverter
{
    public void button1_Click(Object sender, RoutedEventArgs e)
    {
      string filename = "c:\myfile.bmp";
      SendImageToPlayer send = new SendImageToPlayer();
      send.Filename = filename;
      Thread t = new Thread(send.ReadImageFile);
      t.Start();
}

考虑使用BackgroundWorker线程类。它在线程完成时提供事件。

RunWorkerCompleted事件被触发时检查ErrorCode。