Exemple #1
0
        private void LocalVehicle_Finished(object sender, FinishedEventArgs e)
        {
            if (e.Type != RaceEndType.Finished)
            {
                return;
            }

            var finished = new SplitTime(_previousCheckpointTimes.LastOrDefault(), TimeSpan.FromMilliseconds(e.FinalTime), -1);

            _previousCheckpointTimes.Add(finished);

            if ((bool)Settings["SaveTimes"])
            {
                if (_bestTime == TimeSpan.Zero || finished.Total < _bestTime)
                {
                    WriteTimes("pb.txt");
                }
                if ((bool)Settings["SaveAllTimes"])
                {
                    WriteTimes(finished.RenderFilename());
                }
            }

            _previousCheckpointTimes.Clear();
        }
 void onExperimentFinished(object sender, FinishedEventArgs e)
 {
     Dispatcher.BeginInvoke(new Action(() =>
     {
         Application.Current.Shutdown(0);
     }));
 }
 void Notify_Finished(object sender, FinishedEventArgs e)
  {
      DateTime now = DateTime.Now;
      TradeTypes selfhelpInpour = TradeTypes.SelfhelpInpour;
      Member user = Users.GetUser(this.InpourRequest.UserId, false) as Member;
      decimal num = user.Balance + this.InpourRequest.InpourBlance;
      BalanceDetailInfo balanceDetails = new BalanceDetailInfo();
      balanceDetails.UserId = this.InpourRequest.UserId;
      balanceDetails.UserName = user.Username;
      balanceDetails.TradeDate = now;
      balanceDetails.TradeType = selfhelpInpour;
      balanceDetails.Income = new decimal?(this.InpourRequest.InpourBlance);
      balanceDetails.Balance = num;
      if (this.paymode != null)
      {
          balanceDetails.Remark = "充值支付方式:" + this.paymode.Name;
      }
      if (PersonalHelper.Recharge(balanceDetails, this.InpourRequest.InpourId))
      {
          Users.ClearUserCache(user);
          this.ResponseStatus(true, "success");
      }
      else
      {
          PersonalHelper.RemoveInpourRequest(this.InpourId);
          this.ResponseStatus(false, "fail");
      }
  }
Exemple #4
0
        private void Finished(object sender, FinishedEventArgs e)
        {
            if (e.Type != RaceEndType.Finished)
            {
                return;
            }

            _finished = true;

            var finished = new SplitTime(_previousCheckpointTimes.LastOrDefault(), TimeSpan.FromMilliseconds(e.FinalTime), -1);

            _previousCheckpointTimes.Add(finished);

            if (Settings.GetItem <bool>("SaveTimes"))
            {
                if (_bestTime == TimeSpan.Zero || finished.Total < _bestTime)
                {
                    WriteTimes("pb.txt");
                }
                if (Settings.GetItem <bool>("SaveAllTimes"))
                {
                    WriteTimes(finished.RenderFilename());
                }
            }
        }
        private void Notify_Finished(object sender, FinishedEventArgs e)
        {
            DateTime          now               = DateTime.Now;
            TradeTypes        tradeType         = TradeTypes.SelfhelpInpour;
            MemberInfo        user              = Users.GetUser(this.InpourRequest.UserId);
            decimal           balance           = user.Balance + this.InpourRequest.InpourBlance;
            BalanceDetailInfo balanceDetailInfo = new BalanceDetailInfo();

            balanceDetailInfo.UserId    = this.InpourRequest.UserId;
            balanceDetailInfo.UserName  = user.UserName;
            balanceDetailInfo.TradeDate = now;
            balanceDetailInfo.TradeType = tradeType;
            balanceDetailInfo.Income    = this.InpourRequest.InpourBlance;
            balanceDetailInfo.Balance   = balance;
            balanceDetailInfo.InpourId  = this.InpourRequest.InpourId;
            if (this.paymode != null)
            {
                balanceDetailInfo.Remark = "充值支付方式:" + this.paymode.Name;
            }
            if (MemberProcessor.Recharge(balanceDetailInfo))
            {
                this.ResponseStatus(true, "success");
            }
            else
            {
                MemberProcessor.RemoveInpourRequest(this.InpourId);
                this.ResponseStatus(false, "fail");
            }
        }
Exemple #6
0
        void Notify_Finished(object sender, FinishedEventArgs e)
        {
            DateTime          now            = DateTime.Now;
            TradeTypes        selfhelpInpour = TradeTypes.SelfhelpInpour;
            Distributor       user           = Users.GetUser(InpourRequest.UserId, false) as Distributor;
            decimal           num            = user.Balance + InpourRequest.InpourBlance;
            BalanceDetailInfo balanceDetails = new BalanceDetailInfo();

            balanceDetails.UserId    = InpourRequest.UserId;
            balanceDetails.UserName  = user.Username;
            balanceDetails.TradeDate = now;
            balanceDetails.TradeType = selfhelpInpour;
            balanceDetails.Income    = new decimal?(InpourRequest.InpourBlance);
            balanceDetails.Balance   = num;
            if (paymode != null)
            {
                balanceDetails.Remark = "充值支付方式:" + paymode.Name;
            }
            if (SubsiteStoreHelper.AddBalanceDetail(balanceDetails, InpourId))
            {
                Users.ClearUserCache(user);
                ResponseStatus(true, "success");
            }
            else
            {
                SubsiteStoreHelper.RemoveInpourRequest(InpourId);
                ResponseStatus(false, "fail");
            }
        }
Exemple #7
0
        private void NextUpdate()
        {
            if (!Canceled && mUpdates.Count > mCurrentTask)
            {
                int Percent = 0; // Note: there does not seam to be an easy way to get this value
                Progress?.Invoke(this, new WuAgent.ProgressArgs(mUpdates.Count, mUpdates.Count == 0 ? 0 : (100 * mCurrentTask + Percent) / mUpdates.Count, mCurrentTask + 1, Percent, mUpdates[mCurrentTask].Title));

                if (DoInstall)
                {
                    List <string> Files = mAllFiles.GetValues(mUpdates[mCurrentTask].KB);

                    mThread = new Thread(new ParameterizedThreadStart(RunInstall));
                    mThread.Start(Files);
                }
                else
                {
                    string KB = mUpdates[mCurrentTask].KB;

                    mThread = new Thread(new ParameterizedThreadStart(RunUnInstall));
                    mThread.Start(KB);
                }
                return;
            }

            FinishedEventArgs args = new FinishedEventArgs(ErrorCount, RebootRequired);

            //args.AllFiles = mAllFiles;
            args.Updates = mUpdates;
            mAllFiles    = null;
            mUpdates     = null;
            Finished?.Invoke(this, args);
        }
        private void FlowFinished(object sender, FinishedEventArgs <FlowResult> e)
        {
            this.Dispatcher.Invoke(() =>
            {
                switch (sender.GetType().Name)
                {
                case nameof(IslandActivator):
                case nameof(IceBoxActivator):
                case nameof(StopAppActivator):
                case nameof(AirForzenActivator):
                case nameof(BlackHoleActivator):
                case nameof(AnzenbokusuActivator):
                case nameof(FreezeYouActivator):
                case nameof(AnzenbokusuFakeActivator):
                case nameof(UsersirActivator):
                    DevicesOwnerSetted((DeviceOwnerSetter)sender, (DeviceOwnerSetterResult)e.Result);
                    break;

                case nameof(RecoveryFlasher):
                    BoxHelper.ShowMessageDialog("Notice", "msgFlashOK");
                    break;

                case nameof(FilePusher):
                    PushFinished((AdvanceResult)e.Result);
                    break;

                default:
                    new FlowResultWindow(e.Result).ShowDialog();
                    break;
                }
            });
        }
Exemple #9
0
        private void fileprintStart(Model.Printer printer, FinishedEventArgs e)
        {
            try
            {
                fileprintPrintFinished = false;

                foreach (var fileprint in printer.Fileprints)
                {
                    if (fileprintCheck(e.Einsatz, fileprint))
                    {
                        Logger.WriteDebug(MethodBase.GetCurrentMethod(),
                                          "Printer[" + printer.PrinterName + "] Fileprint -> " + fileprint.File);

                        if (!PdfPrinterHelper.Print(printer.PrinterName, fileprint.File))
                        {
                            return;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.WriteError(MethodBase.GetCurrentMethod(), ex);
            }
            finally
            {
                fileprintPrintFinished = true;
            }
        }
 // Closing the app when the experiment is finished
 // for automatic experiment restart
 private void mcbj_NoiseExpFinished(object sender, FinishedEventArgs e)
 {
     Dispatcher.InvokeAsync(new Action(() =>
     {
         Application.Current.Shutdown(e.StatusCode);
     }));
 }
Exemple #11
0
        private void Notify_Finished(object sender, FinishedEventArgs e)
        {
            System.DateTime now = System.DateTime.Now;
            Hidistro.Membership.Context.Distributor distributor = Hidistro.Membership.Context.Users.GetUser(this.InpourRequest.UserId, false) as Hidistro.Membership.Context.Distributor;
            decimal           balance           = distributor.Balance + this.InpourRequest.InpourBlance;
            BalanceDetailInfo balanceDetailInfo = new BalanceDetailInfo();

            balanceDetailInfo.UserId    = this.InpourRequest.UserId;
            balanceDetailInfo.UserName  = distributor.Username;
            balanceDetailInfo.TradeDate = now;
            balanceDetailInfo.TradeType = TradeTypes.SelfhelpInpour;
            balanceDetailInfo.Income    = new decimal?(this.InpourRequest.InpourBlance);
            balanceDetailInfo.Balance   = balance;
            balanceDetailInfo.InpourId  = this.InpourRequest.InpourId;
            if (this.paymode != null)
            {
                balanceDetailInfo.Remark = "充值支付方式:" + this.paymode.Name;
            }
            if (SubsiteStoreHelper.Recharge(balanceDetailInfo))
            {
                Hidistro.Membership.Context.Users.ClearUserCache(distributor);
                this.ResponseStatus(true, "success");
            }
            else
            {
                SubsiteStoreHelper.RemoveInpourRequest(this.InpourId);
                this.ResponseStatus(false, "fail");
            }
        }
 /// <summary>
 /// 如果成功了并且需要重启,就重启
 /// </summary>
 /// <param name="e"></param>
 protected override void OnFinished(FinishedEventArgs <DeviceOwnerSetterResult> e)
 {
     base.OnFinished(e);
     if (e.Result.ErrorType == DeviceOwnerSetterErrType.None && NeedReboot)
     {
         _toolKit.Ae("reboot");
     }
 }
 /// <summary>
 /// One exiftool finished, shot event when registerd
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 void exifTool_Finished(object sender, FinishedEventArgs args)
 {
     if (Saved != null)
     {
         Saved(this, new OnSavedEventArgs(args.ToolOutput + Environment.NewLine +
                                          args.ErrorOutput + Environment.NewLine));
     }
 }
Exemple #14
0
 private void Notify_Finished(object sender, FinishedEventArgs e)
 {
     if (e.IsMedTrade)
     {
         this.FinishOrder();
         return;
     }
     this.UserPayOrder();
 }
        protected virtual void OnFinished(FinishedEventArgs e)
        {
            EventHandler <FinishedEventArgs> handler = EventArgsFinished;

            if (handler != null)
            {
                handler(this, e);
            }
        }
        private void mapService_Finished(object sender, FinishedEventArgs e)
        {
            if (e == null || e.ImageWindow == null || e.Einsatz == null || e.Einsatz.Guid != einsatzGuid)
            {
                return;
            }

            Image = e.ImageWindow;
        }
        public void DoWork(int sleepSeconds)
        {
            //do job
            System.Threading.Thread.Sleep(sleepSeconds * 1000);

            //set event arguments values to send back to caller
            FinishedEventArgs args = new FinishedEventArgs();

            args.message = "WorkerEventArgs: " + obj.ToString();
            OnFinished(args);
        }
Exemple #18
0
 void Notify_Finished(object sender, FinishedEventArgs e)
 {
     if (e.IsMedTrade)
     {
         this.FinishOrder();
     }
     else
     {
         this.UserPayOrder();
     }
 }
        //main method - overload
        public void DoWork()
        {
            //do job


            //set event arguments values to send back to caller
            FinishedEventArgs args = new FinishedEventArgs();

            args.message = "WorkerEventArgs: " + obj.ToString();
            OnFinished(args);
        }
Exemple #20
0
        private static void SimulationOnOnFinished(FinishedEventArgs args)
        {
            for (var i = 0; i < args.Area.GetLength(0); i++)
            {
                for (var j = 0; j < args.Area.GetLength(1); j++)
                {
                    Console.Write(args.Area[i, j].ToString());
                }

                Console.WriteLine();
            }
        }
Exemple #21
0
        // Callback for VideoView Finished signal
        private void OnFinished(IntPtr data)
        {
            if (videoViewFinishedEventHandler != null)
            {
                FinishedEventArgs e = new FinishedEventArgs();

                // Populate all members of "e" (FinishedEventArgs) with real data
                e.VideoView = Registry.GetManagedBaseHandleFromNativePtr(data) as VideoView;
                //here we send all data to user event handlers
                videoViewFinishedEventHandler(this, e);
            }
        }
Exemple #22
0
#pragma warning disable CC0057 // Unused parameters
        protected internal void OnFinished(IntPtr converter, int success)
#pragma warning restore CC0057 // Unused parameters
        {
            if (_configuration.FinishedAction == null)
            {
                return;
            }

            var eventArgs = new FinishedEventArgs(
                ProcessingDocument,
                success == 1);

            _configuration.FinishedAction?.Invoke(eventArgs);
        }
 private void Notify_Finished(object sender, FinishedEventArgs e)
 {
     this.OfflinePayOder();
     if (e.IsMedTrade)
     {
         if (this.Order != null)
         {
             this.FinishOrder();
         }
     }
     else if (this.Order != null)
     {
         this.UserPayOrder();
     }
 }
		private void Notify_Finished(object sender, FinishedEventArgs e)
		{
			if (e.IsMedTrade)
			{
				if (this.Order != null)
				{
					this.FinishOrder();
				}
			}
			else if (this.Order != null)
			{
				this.UserPayOrder();
			}
			this.OfflinePayOder();
			base.Response.Write("success");
			base.Response.End();
		}
Exemple #25
0
        private void InstallNextFile()
        {
            while (mCurrentTask != -1 && mAllFiles.GetCount() > mCurrentTask)
            {
                string File = mAllFiles.GetAt(mCurrentTask);

                mThread = new Thread(new ParameterizedThreadStart(Run));
                mThread.Start(File);
            }

            FinishedEventArgs args = new FinishedEventArgs();

            //args.AllFiles = mAllFiles;
            mAllFiles    = null;
            args.Updates = mUpdates;
            mUpdates     = null;
            Finished?.Invoke(this, args);
        }
Exemple #26
0
        private static void OnGameFinished(object sender, FinishedEventArgs finishedArgs)
        {
            switch (finishedArgs.Result)
            {
            case GameResult.Draw:
                Console.WriteLine("Game result: DrawDefault");
                break;

            case GameResult.Win:
                var result = (WinFinishedEventArgs)finishedArgs;
                Console.WriteLine("Game result: Win");
                Console.WriteLine($"Winner: {result.WinPlayer.Name} {result.WinPlayer.LastName}, Figure type: {result.WinPlayer.FigureType}");
                result.WinCells.ForEach
                    (cell => Console.WriteLine($"[{cell.Row}, {cell.Column}]"));
                Console.WriteLine();
                break;
            }
        }
Exemple #27
0
        private void Finished(object sender, FinishedEventArgs e)
        {
            if (e.Type != RaceEndType.Finished)
            {
                return;
            }

            if (!_active || !_started)
            {
                return;
            }

            _bestTrackTimes.Add(_thisTrackBest);
            var finished = new SplitTrack(_previousTrackTimes.LastOrDefault(), TimeSpan.FromMilliseconds(e.FinalTime), G.Sys.GameManager_.Level_.Name_);

            _previousTrackTimes.Add(finished);

            _started = false;
            ShowPressed(8f);
            _finished = true;
        }
Exemple #28
0
        private void DownloadNextFile()
        {
            while (mCurrentTask != -1 && mDownloads.Count > mCurrentTask)
            {
                Task Download = mDownloads[mCurrentTask];
                mCurTask           = new HttpTask(Download.Url, Download.Path, Download.FileName, true); // todo update flag
                mCurTask.Progress += OnProgress;
                mCurTask.Finished += OnFinished;
                if (mCurTask.Start())
                {
                    return;
                }
            }

            FinishedEventArgs args = new FinishedEventArgs();

            args.Downloads = mDownloads;
            mDownloads     = null;
            args.Updates   = mUpdates;
            mUpdates       = null;
            Finished?.Invoke(this, args);
        }
Exemple #29
0
        private void faxStart(Model.Printer printer, FinishedEventArgs e)
        {
            try
            {
                faxPrintFinished = false;
                faxPageIndex     = 0;

                var printDoc = new PrintDocument();
                if (Path.GetExtension(e.Einsatz.FaxPath).ToLower() == ".txt")
                {
                    faxText = new List <string>();
                    using (var _streamReader = new StreamReader(e.Einsatz.FaxPath, Encoding.GetEncoding(1252)))
                    {
                        while (_streamReader.Peek() >= 0)
                        {
                            faxText.Add(_streamReader.ReadLine());
                        }
                    }

                    printDoc.PrintPage += faxPrinter_PrintPageText;
                }
                else
                {
                    faxImages           = TiffConverter.TiffToBitmapList(e.Einsatz.FaxPath);
                    printDoc.PrintPage += faxPrinter_PrintPageImages;
                }

                printDoc.PrinterSettings.PrinterName = printer.PrinterName;
                printDoc.EndPrint += faxPrinter_StreamDispose;
                printDoc.Print();
            }
            catch (Exception ex)
            {
                Logger.WriteError(MethodBase.GetCurrentMethod(), ex);
                faxPrintFinished = true;
            }
        }
Exemple #30
0
        private void DownloadNextFile()
        {
            while (!Canceled && mDownloads.Count > mCurrentTask)
            {
                Task Download = mDownloads[mCurrentTask];

                if (mUpdates != null)
                {
                    foreach (MsUpdate update in mUpdates)
                    {
                        if (update.KB.Equals(Download.KB))
                        {
                            mInfo = update.Title;
                            break;
                        }
                    }
                }

                mCurTask           = new HttpTask(Download.Url, Download.Path, Download.FileName, true); // todo update flag
                mCurTask.Progress += OnProgress;
                mCurTask.Finished += OnFinished;
                if (mCurTask.Start())
                {
                    return;
                }
                // Failedto start this task lets try an otehr one
                mCurrentTask++;
            }

            FinishedEventArgs args = new FinishedEventArgs();

            args.Downloads = mDownloads;
            mDownloads     = null;
            args.Updates   = mUpdates;
            mUpdates       = null;
            Finished?.Invoke(this, args);
        }
Exemple #31
0
        /// <summary>
        /// 把文字转化为声音,多路配置,多种语音
        /// </summary>
        /// <param name="speekText">要转化成语音的文字</param>
        /// <param name="outWaveFlie">把声音转为文件,默认为不生产wave文件</param>
        public void MultiSpeek(string SpeekText, string outWaveFlie = null)
        {
            System.Console.WriteLine("开始,now=" + System.DateTime.Now);
            MemoryStream mStream = new MemoryStream();
            try
            {
                string[] SpeekTexts = System.Text.RegularExpressions.Regex.Split(SpeekText, "\r\n");
                mStream.Write(new byte[44], 0, 44);
                for (int i = 0; i < SpeekTexts.Length; i++)
                {
                    FinishedEventArgs e = new FinishedEventArgs(SpeekTexts.Length, i);
                    if (FinishedLine != null)
                        FinishedLine(this, e);
                    string ThisStr = SpeekTexts[i];
                    ThisStr = ThisStr.Trim();               //去除前后的空白
                    if (ThisStr == "") continue;            //空段的处理
                    int pos = ThisStr.IndexOf('#');         //#在段中的位置
                    if (pos > 0)
                    {
                        //设定了讲话者时用指定的讲话者说
                        DSpeekerName.TryGetValue(ThisStr.Substring(0, pos).ToLower(), out _speeker);
                        speek(ThisStr.Substring(pos + 1, ThisStr.Length - pos - 1), ref mStream);
                    }
                    else
                    {
                        if (ThisStr.Length < 4)
                        {//没有指定讲话者文本长度小于4
                            speek(ThisStr, ref mStream);
                            continue;
                        }
                        if (ThisStr.Substring(0, 4).ToLower() == "stop")
                        {//暂停一段时间
                            int s = Convert.ToInt32(ThisStr.Substring(4, ThisStr.Length - 4));
                            byte[] bs = new byte[32000];
                            for (int j = 0; j < s; j++)
                            {
                                mStream.Write(new byte[32000], 0, 32000);
                            }
                        }
                        else if (ThisStr.Substring(0, 4).ToLower() == "ting")
                        {//插入叮铃声
                            mStream.Write(buffting, 0, buffting.Length);
                        }
                        else
                        {//没有指定讲话者文本长度大于等于4
                            speek(ThisStr, ref mStream);
                        }
                    }
                }
                int ret = TTSDll.QTTSFini();
                if (ret != 0) throw new Exception("逆初始化TTS引擎错误,错误代码:" + ((ErrorCode)ret).ToString("G"));

                WAVE_Header header = getWave_Header((int)mStream.Length - 44);     //创建wav文件头
                byte[] headerByte = StructToBytes(header);                         //把文件头结构转化为字节数组                      //写入文件头
                mStream.Position = 0;                                                        //定位到文件头
                mStream.Write(headerByte, 0, headerByte.Length);                             //写入文件头
                //mStream.Position = 0;
                //System.Media.SoundPlayer pl = new System.Media.SoundPlayer(mStream);
                //pl.Stop();
                //pl.Play();
                if (outWaveFlie != null)
                {
                    FileStream ofs = new FileStream(outWaveFlie, FileMode.Create);
                    mStream.WriteTo(ofs);
                    ofs.Close();
                    ofs = null;
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.Message);
            }
            finally
            {
                int ret = TTSDll.QTTSFini();
                mStream.Close();
                mStream = null;
            }
            System.Console.WriteLine("完成,now=" + System.DateTime.Now);
        }
Exemple #32
0
        /// <summary>
        /// 把文本转换成声音,写入指定的内存流
        /// </summary>
        /// <param name="SpeekText">要转化成语音的文字</param>
        /// <param name="mStream">合成结果输出的音频流</param>
        private void speek(string SpeekText, ref MemoryStream mStream)
        {
            if (SpeekText == "" || _speed == "" || _vol == "" || _speeker == "") return;
            string szParams = "ssm=1," + _speeker + ",spd=" + _speed + ",aue=speex-wb;7,vol=" + _vol + ",auf=audio/L16;rate=16000";
            int ret = 0;
            try
            {
                sessionID = Ptr2Str(TTSDll.QTTSSessionBegin(szParams, ref ret));
                if (ret != 0) throw new Exception("初始化TTS引会话错误,错误代码:" + ret);

                ret = TTSDll.QTTSTextPut(sessionID, SpeekText, (uint)Encoding.Default.GetByteCount(SpeekText), string.Empty);
                if (ret != 0) throw new Exception("向服务器发送数据,错误代码:" + ret);
                IntPtr audio_data;
                int audio_len = 0;
                SynthStatus synth_status = SynthStatus.TTS_FLAG_STILL_HAVE_DATA;

                MemoryStream fs = mStream;
                int pos = 0; 
                int oldPos = 0;
                byte[] tmpArray = Encoding.Default.GetBytes(SpeekText);
                while (synth_status == SynthStatus.TTS_FLAG_STILL_HAVE_DATA)
                {
                    audio_data = TTSDll.QTTSAudioGet(sessionID, ref audio_len, ref synth_status, ref ret);
                    string posStr = Ptr2Str(TTSDll.QTTSAudioInfo(sessionID));
                    pos = Convert.ToInt32(posStr.Substring(4));
                    FinishedEventArgs e = new FinishedEventArgs(tmpArray.Length, pos);
                    if (FinishedText != null && pos - oldPos != 0)
                    {
                        FinishedText(this, e);
                        System.Console.WriteLine(posStr + ":" + Encoding.Default.GetString(tmpArray, oldPos, pos - oldPos));
                    }
                    oldPos = pos;
                    if (ret != 0) break;
                    byte[] data = new byte[audio_len];
                    if (audio_len > 0) Marshal.Copy(audio_data, data, 0, audio_len);
                    fs.Write(data, 0, data.Length);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
            finally
            {
                ret = TTSDll.QTTSSessionEnd(sessionID, "");
                if (ret != 0) throw new Exception("结束TTS会话错误,错误代码:" + ret);
            }
        }