[英]Creating Threads in C#
我试图让一个线程在C#中工作以重置时间并在其旁边运行另一个函数。 我的代码是:
Thread loopTime = new Thread(this.someFunction);
loopTime.Start();
for (int i = 0; i < 20; i++)
{
ChangeTimeFunction(someTime);
Thread.Sleep(200);
}
如果我传入this.SomeFunction()
我会收到一个线程错误。 这不能根据Visual Studio使用。 我可以将for循环作为一个线程,但我不知道如何传递变量someTime
。
有没有办法将变量传递给循环,如果它是一个函数或从函数内调用for循环。
谢谢你的帮助。
更新:
someFunction是使用Visual Studio记录的方法。 这不能在主线程之外使用。 我需要将for循环放在我正在创建的线程中。 有谁知道如何做到这一点?
谢谢
有没有办法将变量传递给循环,如果它是一个函数或从函数内调用for循环。
.NET有两个用于启动线程的委托。 第一个是ThreadStart
, ThreadStart
调用一个没有参数的方法。
第二个是ParameterizedThreadStart
,它使用单个object
作为参数调用方法。
如果在Thread构造函数中传递一个具有object
参数的方法,C#将隐式创建一个ParameterizedThreadStart
委托。 然后使用线程的.Start(Object)
方法将object
发送给它。
例如,要使for循环成为一个线程,假设someTime是一个DateTime
并包含一个强制转换为该效果:
Thread loopTime = new Thread(someFunction);
loopTime.Start(someTime);
public void someFunction(object someTime) {
for (int i = 0; i < 20; i++)
{
// Note the cast here... I assumed it's a DateTime
ChangeTimeFunction((DateTime) someTime);
Thread.Sleep(200);
}
}
我认为这个链接: http : //msdn.microsoft.com/en-us/library/aa645740%28VS.71%29.aspx可以解释你需要做什么。 似乎ThreadStart delaget将允许您在线程启动时传递一个函数来执行。
这听起来不像“这个”限定词的问题。
你的someFunction是否接受参数? 如果是,您可以:
use可以使用closure从外部作用域传递变量。
int i = 2; Thread t = new Thread(x => { i++; }); t.Start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.