私は、ストリーミング ソフトウェアである 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);
}
}
ですから、これに問題がある場合、または正しい方向に私を向けることができる場合は、助けていただければ幸いです. 何らかの方法で私を助けることができる場合は、お知らせください。ありがとうございました!