public void ReportProgress(int percent, string message) { InvokeAsyncOnUiThread(() => OnReportProgress?.Invoke(percent, message)); }
private void ThreadBackground() { while (true) { // 检测是否处于暂停的状态 while (m_isRunningStop) { ; } // 提取处理的任务 int index = Interlocked.Decrement(ref m_opCount); if (index < 0) { // 任务完成 break; } else { T item = m_dataList[index]; bool result = false; bool isException = false; try { if (!m_isQuit) { result = m_operater(item); } } catch (Exception ex) { isException = true; // 此处必须吞噬所有异常 OnExceptionOccur?.Invoke(item, ex); // 是否需要退出处理 if (m_isQuitAfterException) { EndedOperater(); } } finally { // 保证了报告进度时数据的正确性 HybirdLock.Enter(); if (result) { m_successCount++; } if (isException) { m_failedCount++; } m_finishCount++; OnReportProgress?.Invoke(m_finishCount, m_dataList.Length, m_successCount, m_failedCount); HybirdLock.Leave(); } } } JustEnded(); }
private void ReportProgress(int progress) { var eventArgs = new ConversionProgressChangedEventArgs(progress); OnReportProgress?.Invoke(this, eventArgs); }
/// <summary> /// Translate event to high level /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) { OnReportProgress?.Invoke(this, e); }