запустить метод другого класса с параметром в отдельном потоке - PullRequest
1 голос
/ 27 марта 2012
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 ]

2 голосов
/ 27 марта 2012

Вы должны начать свою тему после ее создания: t.Start();

Вам также следует рассмотреть возможность использования параллельной библиотеки задач .

О, о, ятолько что заметил, что вы хотите передать параметр.Вы можете установить свойство в своем экземпляре SendImageToPlayer до запуска потока или передать object в функцию ReadImagefile.Но на самом деле, используйте TPL, это лучше.

1 голос
/ 27 марта 2012

Введите свойство FileName в своем классе SendImageToPlayer и установите его перед началом потока.

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 .Он предоставляет события после завершения потока.

Вы проверяете ErrorCode при возникновении события RunWorkerCompleted .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...