Как создать тему в WinForms? - PullRequest
       15

Как создать тему в WinForms?

6 голосов
/ 21 августа 2009

Мне нужна помощь в создании потока, C # winforms

private void button1_Click(object sender, EventArgs e) {
    Thread t=new Thread(new ThreadStart(Start)).Start();
}

public void Start() {
    MessageBox.Show("Thread Running");
}

Я продолжаю получать это сообщение:

Cannot implicitly convert type 'void' to 'System.Threading.Thread

что делать с документацией msdn плохо

Ответы [ 3 ]

15 голосов
/ 21 августа 2009

Это будет работать:

Thread t = new Thread (new ThreadStart (Start));
t.Start();

И это тоже сработает:

new Thread (new ThreadStart(Start)).Start();

Документация MSDN хорошая и правильная, но вы делаете это неправильно. :) Вы делаете это:

Thread t = new Thread (new ThreadStart(Start)).Start();

Итак, на самом деле вы пытаетесь присвоить объект, возвращаемый методом Start () (который является недействительным), объекту Thread; отсюда и сообщение об ошибке.

3 голосов
/ 21 августа 2009

.NET Framework также предоставляет удобный класс потоков BackgroundWorker . Это хорошо, потому что вы можете добавить его с помощью VisualEditor и настроить все его свойства.

Вот небольшой небольшой урок (с изображениями) о том, как использовать фонового работника: http://dotnetperls.com/backgroundworker

2 голосов
/ 21 августа 2009

Попробуйте разделить его так:

private void button1_Click(object sender, EventArgs e)
{
  // create instance of thread, and store it in the t-variable:
  Thread t = new Thread(new ThreadStart(Start));
  // start the thread using the t-variable:
  t.Start();
}

Thread.Start -метод возвращает void (т.е. ничего), поэтому, когда вы пишете

Thread t = something.Start();

вы пытаетесь установить результат Start -метода, который является недействительным, в t -вариант. Это невозможно, поэтому вы должны разбить инструкцию на две строки, как указано выше.

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