#c#-4.0
#c #-4.0
Вопрос:
В моем коде я запускаю поток. Что мне нужно сделать сейчас, так это передать переменную в метод «sayHello». Поскольку он вызывается в отдельном потоке, мои переменные не видны для потока.
ThreadStart ts = new ThreadStart(SayHello);
mThread = new Thread(ts);
mThread.Start();
Я новичок в C # и, пожалуйста, дайте мне знать, как это сделать.
Комментарии:
1. пожалуйста, прочитайте: albahari.com/threading
Ответ №1:
вот как я передаю значения. Во-первых, ваш параметр должен быть объектом, поэтому вам нужно выполнить приведение в вашем методе. Ваш метод должен возвращать 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
}
Если вам нужно передать более одной переменной, то создайте класс и присвоите свои значения свойствам и приведите в свой метод, но есть и другие способы архивировать это. Надеюсь, это поможет. Если вам нужна дополнительная информация, проверьте это
ссылка: потоковая передача в C #
Удачи!
Ответ №2:
Вы можете передавать только через объект.
//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]);
}