【发布时间】:2021-06-25 10:07:54
【问题描述】:
我尝试在其内部启动一个正在运行的线程。也许这听起来很奇怪,但这只是为了知道它是否可能。
我的调用函数启动了一个线程,其中包括我的函数。之后,我的函数会查询之前是否插入了特定设备。如果这是真的,一切都很好,并且将与该设备建立连接。 如果设备在软件启动时没有插入,该函数会询问设备现在是否已插入。如果为真,则调用自身,如果为假,则停止。
这是代码,它应该可以工作
public void CallFunction()
{
Thread CheckDevice = new Thread(new ThreadStart(myFunction));
CheckDevice.Start();
}
private void myFunction()
{
if (ConnectionCheck.DevicePluggedIn)
{
try
{
Device.Connect();
}catch
{
//ErrorMessage
}
}
else
{
if (ConnectionCheck.DevicePluggedIn = SearchDevice())
{
Thread.CurrentThread.Start();
return;
}
else
{
//InfoMessage
}
}
}
这可能吗,我这样调用线程还是只调用函数更好。 感谢您的帮助。
【问题讨论】:
-
这完全没有意义。 ThreadStart 委托中的代码在 Thread 启动之前不会被执行。如前所述,您根本不应该明确使用线程。相反,应专注于任务等现代方法。
-
Thread.CurrentThread.Start();似乎毫无意义。如果当前线程没有运行,它如何执行这条语句? -
你不需要这样做。只需在
myFunction中添加一个 while 循环即可。 -
完美的
for/while循环有什么问题? -
“这可能吗,我这样称呼线程” - 如果你真的运行你的代码,你会发现你的代码抛出了
ThreadStateException跨度>
标签: c# multithreading