private void UploadFile() { if (FilesQueue.Count != 0) { iStatus = StatusCode.BUSY; UploadFileTask UploadTask = FilesQueue.Dequeue(); m_wManager.SucceededHandler = (sender, e) => { iStatus = StatusCode.SUCCESS; //无客户事件处理 iStatus = iStatus == StatusCode.SUCCESS ? StatusCode.READY : iStatus; }; m_wManager.FailedHandler = (sender, e) => { int Life = UploadTask.Life; if (Life > 0) { //还有生命 TaskEqneue(new UploadFileTask(UploadTask.TargetFile, UploadTask.LocalFile, Life - 1)); iStatus = StatusCode.RETRY; } else { //error iStatus = StatusCode.UNKNOWN; } }; m_wManager.Upload(UploadTask.TargetFile, UploadTask.LocalFile); } }
public void TaskEqneue(UploadFileTask Files) { //对该方法上锁.不可有多个线程共同进行入队 lock (FilesQueue) { FilesQueue.Enqueue(Files); } }