private void LaunchSubProcess(Request request) { string args = String.Format(" \"{0}\" -i \"{1}\" -o \"{2}\" -rate {3} -replace \"{4}\" -delete \"{5}\" -utf8", request.Voice, request.InputTextFile, request.OutputAudioFile, request.Rate, request.ReplacementFile, request.DeletionFile); Process p = new Process(); p.StartInfo.FileName = Path.Combine("TTS", "TTS.exe"); p.StartInfo.UseShellExecute = false; p.StartInfo.WorkingDirectory = Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location); p.StartInfo.Arguments = args; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.CreateNoWindow = true; p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; p.Start(); StreamReader output = p.StandardOutput; string line; while ((line = output.ReadLine()) != null) { if (BackgroundService.Instance.ttsController.InvokeRequired) { BackgroundService.Instance.ttsController.BeginInvoke(new MethodInvoker(delegate { int percent; if(Int32.TryParse(line, out percent)) { request.Progress = percent; } })); } } p.WaitForExit(); }
public void AddRequest(Request request) { int i = 0; for (; i < _requestList.Count; i++) { if (request.Priority > _requestList[i].Priority && request.ID < _requestList[i].ID && _requestList[i].TakenBy == -1) break; } //request.Position = i; ManualResetEvent mre = new ManualResetEvent(false); lock (requestListLock) { if (BackgroundService.Instance.ttsController.InvokeRequired) { BackgroundService.Instance.ttsController.BeginInvoke(new MethodInvoker(delegate { _requestList.Insert(i, request); mre.Set(); })); } } mre.WaitOne(-1); idleMRE.Set(); }
private void RemoveTop(Request request) { lock (requestListLock) { if (BackgroundService.Instance.ttsController.InvokeRequired) { BackgroundService.Instance.ttsController.BeginInvoke(new MethodInvoker(delegate { _requestList.Remove(request); })); } } }
/*============Private Function======*/ private void Test(Object obj) { string novelTitle = (string)obj; Novel n = NovelLibrary.Instance.GetNovel(novelTitle); UpdateNovels(); for (int i = 0; i < n.Chapters.Count; i++) { Chapter c = n.Chapters[i]; Request r = new Request("VW Hui", c, n.GetReplaceSpecificationLocation(), n.GetDeleteSpecificationLocation(), 2, 0); ttsScheduler.AddRequest(r); } }