Как передать переменные в поток в C #? - PullRequest
1 голос
/ 12 октября 2011

В моем коде я запускаю поток. Что мне нужно сделать сейчас, это передать переменную в метод "SayHello". Поскольку он вызывает в отдельном потоке, мои переменные не видны для потока.

ThreadStart ts = new ThreadStart(SayHello);
mThread = new Thread(ts);
mThread.Start();

Я новичок в C # и, пожалуйста, дайте мне знать, как это сделать.

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

так я передаю значения. Во-первых, ваш параметр должен быть объектом, поэтому вам нужно привести его в метод. Ваш метод должен возвращать void, если вам нужно вернуть значения, вы можете сделать это разными способами, с помощью изменяемых переменных или потоковой связи и т. Д. Затем:

string sParameters = "This is my parameter";
Thread thrProcess = new Thread(MyMethod);
thrProcess.IsBackgroud = true;   // only if needed
thrProcess.Start(sParameters);   // string derives from object

А в вашем методе:

void MyMethod(object param)
{
    string sParameterValue = (string)param;
// Now you can work with sParameterValue
}

Если вам нужно передать более одной переменной, то создайте класс и присвойте свои значения свойствам и приведите их в свой метод, но есть другие способы архивировать это. Надеюсь это поможет. Если вам нужно больше информации, проверьте это ссылка: Threading в C #

Удачи!

0 голосов
/ 14 февраля 2017

Вы можете пройти только через объект.

//Declaring the Thread    
Thread T1;

// Calling the Thread
object[] threadPass = { String1, String2, Int1 };
T1 = new thread(Threadvoid);
T1.Start(threadPass);

// Thread Void
void Threadvoid(object passedObject)
{
    //Take the variables back out of the object
    object[] ThreadPass = passedObject as object[];
    string String1 = ThreadPass[0].ToString();
    string String2 = ThreadPass[1].ToString();
    int Int1 = Convert.ToInt32(ThreadPass[2]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...