我正在开发一个简单的应用程序,该应用程序连接到流媒体软件 Wirecast,并强制它每 X 秒更改一次源。我认为这对我来说是学习 ASP MVC 4 的好方法,但是我对它不是很熟悉并且遇到了一些问题。我希望用户能够通过选择单选按钮并点击“应用”或类似的东西来启用和禁用循环。启动循环工作正常,但我无法结束它。我尝试这样做的方法是创建一个运行循环的线程,并在用户选择“启用循环”单选按钮时启动线程,并在他们选择“禁用循环”时中止线程。我可以看到 Abort 方法被调用,但线程仍在运行。相关代码如下:
public Thread loop = new Thread(new ThreadStart(ThreadLoop));
[HttpPost]
public ActionResult Loop(Models.Loop model)
{
if (model.doLoop == true)
{
loop.Start();
}
else
{
loop.Abort();
}
return View();
}
public static void ThreadLoop()
{
object oWirecast = GetWirecast();
object oDocument = Late.Invoke(oWirecast, "DocumentByIndex", 1);
object oNormalLayer = Late.Invoke(oDocument, "LayerByName", "normal");
shotCount = (int)Late.Invoke(oNormalLayer, "ShotCount");
int shot = 0;
while (true)
{
shot = shot + 1;
if (shot > shotCount)
{
shot = shot % shotCount;
}
int shot_id = (int)Late.Invoke(oNormalLayer, "ShotIDByIndex", shot);
Late.Set(oNormalLayer, "ActiveShotID", shot_id);
Late.Invoke(oNormalLayer, "Go");
Thread.Sleep(3000);
}
}
因此,如果您对此有任何问题,或者可以为我指明正确的方向,我希望您能提供帮助。如果我能以任何方式帮助你,请告诉我。谢谢!