// This method is called after all Web servers respond, // Cancel is called, or the timeout occurs private void AllDone(CoordinationStatus result) { switch (result) { case CoordinationStatus.Cancel: Console.WriteLine("The operation was canceled"); break; case CoordinationStatus.Timeout: Console.WriteLine("The operation timed-out"); break; case CoordinationStatus.AllDone: Console.WriteLine("Here are the results from all the Web servers"); for (Int32 n = 0; n < m_requests.Length; n++) { WebResponse response = m_results[n] as WebResponse; if (response != null) { Console.WriteLine("{0} returned {1} bytes.", response.ResponseUri, response.ContentLength); } else { Exception e = m_results[n] as Exception; if (e != null) { Console.WriteLine("{0} failed due to {1}.", m_requests[n].RequestUri, e.Message); } } } break; } }
public void AllDone(CoordinationStatus status) { switch (status) { case CoordinationStatus.Cancel: Console.WriteLine("Operation canceled"); break; case CoordinationStatus.TimeOut: Console.WriteLine("Operation time-out"); break; case CoordinationStatus.AllDone: Console.WriteLine("Operation completed"); foreach (var server in m_servers) { Console.WriteLine("{0}", server.Key); var result = server.Value; if (result is Exception) { Console.WriteLine("failed due to {0}", result.GetType().Name); } else { Console.WriteLine("retruned {0:N0} bytes", result); } } break; } }
// This method is called after all Web servers respond, // Cancel is called, or the timeout occurs private void AllDone(CoordinationStatus status) { switch (status) { case CoordinationStatus.Cancel: Console.WriteLine("Operation canceled."); break; case CoordinationStatus.Timeout: Console.WriteLine("Operation timed-out."); break; case CoordinationStatus.AllDone: Console.WriteLine("Operation completed; results below:"); foreach (var server in _servers) { Console.Write("{0} ", server.Key); Object result = server.Value; if (result is Exception) { Console.WriteLine("failed due to {0}.", result.GetType().Name); } else { Console.WriteLine("returned {0:N0} bytes.", result); } } break; } }
private void AllDone(CoordinationStatus coordinationStatus) { switch (coordinationStatus) { case CoordinationStatus.Cancel: Console.WriteLine("Operation was cancelled"); return; case CoordinationStatus.Timeout: Console.WriteLine("Operation has timed out"); return; } Console.WriteLine("Operation completed, results below:"); foreach (var mServer in m_servers) { Console.Write($"{mServer.Key} "); var result = mServer.Value; if (result is Exception) { Console.WriteLine($"failed due to {result.GetType().Name}."); continue; } Console.WriteLine($"returned {result:D} bytes."); } }
private void ReportStatus(CoordinationStatus status) {//如果报告从未报告过,就报告它,否则忽略它 if (Interlocked.Exchange(ref _statusReported, 1) == 0) { _callback(status); } }
private void ReportStatus(CoordinationStatus status) { if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
private void ReportStatus(CoordinationStatus status) { //如果状态从未报告过,就报告它;否则忽略它 if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
public void ReportStatus(CoordinationStatus status) { //如果状态从未报告过就报告,已报告过就忽略 if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
private void ReportStatus(CoordinationStatus status) { // 如果状态未报告过,就报告,否则忽略 if (Interlocked.Exchange(ref statusReported, 1) == 0) { callback(status); } }
private void ReportStatus(CoordinationStatus allDone) { // Note: Если состояние ни разу не передавалось, передайте его, в противном случае игнорируйте его if (Interlocked.Exchange(ref _statusReported, 1) == 0) { _callback(allDone); } }
private void ReportStatus(CoordinationStatus status) { // If status has never been reported, report it; else ignore it if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
private void ReportStatus(CoordinationStatus status) { // Если состояние ни разу не передавалось, передать его; // в противном случае оно игнорируется if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
private void ReportStatus(CoordinationStatus status) { // Если состояние ни разу не передавалось, передать его; // в противном случае оно игнорируется if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { _completionSource.SetResult(status); m_callback(status); } }
private void AllDown(CoordinationStatus status) { // 此处没有取消和超时状态,直接完成 if (status == CoordinationStatus.AllDone) { Interlocked.Exchange(ref ConnectStatus, 0); LogNet?.WriteDebug("All bytes read complete."); OnReceivedData?.Invoke(BytesResult.ToArray()); } }
private void ReportStatus(CoordinationStatus status) { var oldValue = Interlocked.Exchange(ref m_statusReported, 1); if (oldValue == 0) { // Interlocked как арбитр: // гарантируется, что метод обратного вызова сработает только один раз, // т.к. только один поток переведет m_statusReported из 0 в 1 m_callBack(status); } }
private void ReportStatus(CoordinationStatus status) { if (m_timer != null) { // If timer is still in play, kill it. Timer timer = Interlocked.Exchange(ref m_timer, null); if (timer != null) { timer.Dispose(); } } // If status has never been reported, report it; else ignore it. if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
private void ReportStatus(CoordinationStatus status) { if (m_timer != null) { Timer timer = Interlocked.Exchange(ref m_timer, null); if (timer != null) { timer.Dispose(); } } if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
private void ReportStatus(CoordinationStatus status) { if (m_timer != null) // If timer is still in play, kill it { Timer timer = Interlocked.Exchange(ref m_timer, null); if (timer != null) { timer.Dispose(); } } // If status has never been reported, report it; else ignore it if (Interlocked.Exchange(ref m_statusReported, 1) == 0) { m_callback(status); } }
private void _allDone(CoordinationStatus status) { switch (status) { case CoordinationStatus.AllDone: Console.WriteLine("here are the results from all the web servers"); for (int i = 0; i < m_requests.Length; i++) { Console.WriteLine("{0} returned {1} bytes", m_results[i].ResponseUri, m_results[i].ContentLength); } break; case CoordinationStatus.Cancel: Console.WriteLine("the operatio was canceled"); break; case CoordinationStatus.Timeout: Console.WriteLine("the operatio time-out"); break; } }
private void AllDone(CoordinationStatus status) { switch (status) { case CoordinationStatus.Cancel: Console.WriteLine("The operation was canceled"); break; case CoordinationStatus.Timeout: Console.WriteLine("The operation was time-out"); break; case CoordinationStatus.AllDone: Console.WriteLine("HERE ARE:"); for (int n = 0; n < m_requests.Length; n++) { Console.WriteLine($"{m_results[n].ResponseUri} returned {m_results[n].ContentLength} bytes."); } break; } }
private void AllDone(CoordinationStatus status) { switch (status) { case CoordinationStatus.Cancel: Console.WriteLine("operation canceled"); break; case CoordinationStatus.Timeout: Console.WriteLine("operation timeout"); break; case CoordinationStatus.AllDone: Console.WriteLine("operation AllDone"); foreach (var server in m_servers) { Console.WriteLine("url is {0},result is {1}", server.Key, server.Value); } break; } }
private void AllDone(CoordinationStatus status) { switch (status) { case CoordinationStatus.AllDone: Console.WriteLine("Operation completed; results below: "); ShowResult(); break; case CoordinationStatus.Timeout: Console.WriteLine("Operation timed-out."); ShowResult(); break; case CoordinationStatus.Cancel: Console.WriteLine("Operation canceled."); ShowResult(); break; default: break; } }
// Этот метод вызывается после получения ответа от всех веб-серверов, // вызова Cancel или тайм-аута private void AllDone(CoordinationStatus status) { switch (status) { case CoordinationStatus.Cancel: Console.WriteLine("Operation canceled."); break; case CoordinationStatus.Timeout: Console.WriteLine("Operation timed out."); break; case CoordinationStatus.AllDone: Console.WriteLine("Operation completed; results below:"); foreach (var server in m_servers) { Console.Write("{0} ", server.Key); Object result = server.Value; if (result is Exception) { Console.WriteLine("failed due to {0}.", result.GetType().Name); } else { Console.WriteLine("returned {0:N0} bytes.", result); } } break; } }
private void ReportStatus(CoordinationStatus status) { // If status has never been reported, report it; else ignore it if (Interlocked.Exchange(ref m_statusReported, 1) == 0) m_callback(status); }