public void DownloadAsync(CompletedEventHandler completedEvent) { Thread thread = new Thread(new ThreadStart(() => { VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil(); string output = cutil.DownloadWithCert(CONF_URL, false, "", CONF_CERT); Debug.WriteLine(output); if (output == null || output.Length < 1) { completedEvent(false); return; } DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ConfModel)); using (MemoryStream memStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(output))) { try { _confModel = serializer.ReadObject(memStream) as ConfModel; } catch (Exception e) { if(completedEvent != null) completedEvent(false); return; } } if (completedEvent != null) completedEvent(true); })); thread.Start(); }
/// <summary> /// Deletes out of date temp files /// </summary> /// <param name="sDataPath">application data path</param> /// <param name="extensions">temp files extensions string array</param> /// <param name="days">period for deleting files</param> /// <param name="finishDate">date after that files will not be deleted</param> /// <param name="completedHandler">handler to events for completion</param> /// <returns>true in case of success</returns> public static bool Clean( string sDataPath, IList <string> extensions, int days, DateTime finishDate, CompletedEventHandler completedHandler ) { string query = string.Format(QUERY_TMPL, GetDrive(sDataPath), GetPath(sDataPath), GetExtensionCondition(extensions), GetDate(days, finishDate)); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) { // Create a results watcher object, // and handler for results and completion ManagementOperationObserver results = new ManagementOperationObserver(); // Attach handler to events for results and completion results.ObjectReady += NewObject; results.Completed += completedHandler; // Done; // Call the asynchronous overload of Get() // to start the enumeration searcher.Get(results); return(true); } }
/// <summary> /// 登录MC正版账号 /// </summary> /// <param name="completedEventHandler"></param> /// <param name="ID"></param> /// <param name="PW"></param> public YggdrasilWorker(CompletedEventHandler completedEventHandler, string ID, string PW) { this.ID = ID; this.PW = PW; this.completedEventHandler = completedEventHandler; WorkerSupportsCancellation = true; DoWork += YggdrasilWorker_DoWork; RunWorkerCompleted += YggdrasilWorker_RunWorkerCompleted; }
/// <summary> /// 网络操作后台线程 /// </summary> /// <param name="completedEventHandler">完成时调用</param> /// <param name="operation">所需的操作</param> /// <param name="beSendedData">需要发送的数据</param> /// <param name="tryTimes">尝试次数</param> /// <param name="passDown">需要在完成时传给CompletedEventHandler委托的东西</param> public NetworkWorker(CompletedEventHandler completedEventHandler, ExchangeCode operation, byte[] beSendedData, object passDown) { this.beSendedData = beSendedData; this.operation = operation; this.completedEventHandler = completedEventHandler; WorkerSupportsCancellation = true; DoWork += NetworkWorker_DoWork; RunWorkerCompleted += NetworkWorker_RunWorkerCompleted; this.passDown = passDown; }
public Task <IEnumerable <PropertyDataCollection> > CollectAsync() { var tcs = new TaskCompletionSource <IEnumerable <PropertyDataCollection> >(); var watcher = new ManagementOperationObserver(); var results = new List <PropertyDataCollection>(); var readyHandler = new ObjectReadyEventHandler((sender, e) => { results.Add(e.NewObject.Properties); }); // The event handler that gets invoked by the watcher. var completedHandler = default(CompletedEventHandler); completedHandler = new CompletedEventHandler((sender, e) => { var tcsLocal = tcs; try { if (e.Status == ManagementStatus.NoError) { // The operation was completed without any errors. tcsLocal.SetResult(results); return; } if (e.Status == ManagementStatus.CallCanceled || e.Status == ManagementStatus.OperationCanceled) { // The task was cancelled before it could be completed. tcsLocal.SetCanceled(); return; } // An exception occurred during the operation. tcsLocal.SetException(new Exception($"Runtime error {e.Status}")); return; } finally { // Clean up the event handlers. watcher.Completed -= completedHandler; } }); // Wire up the event handler and begin the operation. watcher.ObjectReady += readyHandler; watcher.Completed += completedHandler; var management = new ManagementClass("Win32_LogicalDisk"); management.GetInstances(watcher); return(tcs.Task); }
public void DownloadAsync(CompletedEventHandler completedEvent) { Thread thread = new Thread(new ThreadStart(() => { VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil(); string output = cutil.DownloadWithCert(CONF_URL, false, "", CONF_CERT); Debug.WriteLine(output); if (output == null || output.Length < 1) { completedEvent(false); return; } DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ConfModel)); using (MemoryStream memStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(output))) { try { _confModel = serializer.ReadObject(memStream) as ConfModel; } catch (Exception e) { if (completedEvent != null) { completedEvent(false); } return; } } if (completedEvent != null) { completedEvent(true); } })); thread.Start(); }
public void VerifyAsync(string verificationUri, string voteContainerId, CompletedEventHandler completedEvent) { ErrorMessage = null; Thread thread = new Thread(new ThreadStart(() => { if (completedEvent == null) { throw new ArgumentNullException(); } VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil(); string post_data = "verify=" + voteContainerId; string result = cutil.DownloadWithCert(verificationUri, true, post_data, VERIFICATION_CERT); if (result == null || result.Equals("")) { completedEvent(VerificationStatus.Failure); return; } string[] components = result.Split(new string[] { "\n" }, 4, StringSplitOptions.None); // In case of failure 'components' contains following items: // 0: version number // 1: status code 1 // 2: error message // 3: new-line // In case of success 'components' should contain following items: // 0: version number // 1: status code 0 // 2: elections separated by TAB // 3: encrypted votes separated by new-line following list of candidates if (components.Length < 4) { completedEvent(VerificationStatus.Failure); return; } VersionNumber = Convert.ToInt32(components[0]); StatusCode = Convert.ToInt32(components[1]); ErrorMessage = components[2]; if (StatusCode != 0) { completedEvent(VerificationStatus.Failure); return; } string[] elections = components[2].Split('\t'); if (elections.Length < 1) { completedEvent(VerificationStatus.Failure); return; } // separate encrypted votes from candidates, 'components' item count should be at least 2 components = components[3].Split(new string[] { "\n\n" }, StringSplitOptions.None); if (components.Length < 2) { completedEvent(VerificationStatus.Failure); return; } string encryptedVotesString = components[0]; string[] encryptedVotes = encryptedVotesString.Split('\n'); if (encryptedVotes.Length < 1) { completedEvent(VerificationStatus.Failure); return; } _encryptedVotes = new List <EncryptedVote>(); foreach (string encryptedVoteStr in encryptedVotes) { string[] encVoteComponents = encryptedVoteStr.Split('\t'); EncryptedVote encVote = new EncryptedVote(); encVote.ElectionName = encVoteComponents[0]; encVote.EncryptedHex = encVoteComponents[1]; _encryptedVotes.Add(encVote); } string[] candidatesArray = components[1].Split('\n'); if (candidatesArray.Length < 1) { completedEvent(VerificationStatus.Failure); return; } _candidates = new List <Candidate>(); foreach (string candidateStr in candidatesArray) { string[] candidateComponents = candidateStr.Split('\t'); Candidate candidate = new Candidate(); candidate.ElectionName = candidateComponents[0]; candidate.Code = candidateComponents[3]; candidate.Name = candidateComponents[4]; candidate.Party = candidateComponents[5]; _candidates.Add(candidate); } completedEvent(0); })); thread.Start(); }
/// <summary> /// 网络操作后台线程 /// </summary> /// <param name="completedEventHandler">完成时调用</param> /// <param name="operation">所需的操作</param> /// <param name="beSendedData">需要发送的数据</param> /// <param name="tryTimes">尝试次数</param> /// <param name="passDown">需要在完成时传给CompletedEventHandler委托的东西</param> public NetworkWorker(CompletedEventHandler completedEventHandler, ExchangeCode operation, string beSendedData, object passDown) : this(completedEventHandler, operation, Encoding.UTF8.GetBytes(beSendedData), passDown) { }
public void VerifyAsync(string verificationUri, string voteContainerId, CompletedEventHandler completedEvent) { ErrorMessage = null; Thread thread = new Thread(new ThreadStart(() => { if (completedEvent == null) throw new ArgumentNullException(); VVK_WPRC.CurlUtil cutil = new VVK_WPRC.CurlUtil(); string post_data = "verify=" + voteContainerId; string result = cutil.DownloadWithCert(verificationUri, true, post_data, VERIFICATION_CERT); if (result == null || result.Equals("")) { completedEvent(VerificationStatus.Failure); return; } string[] components = result.Split(new string[]{"\n"}, 4, StringSplitOptions.None); // In case of failure 'components' contains following items: // 0: version number // 1: status code 1 // 2: error message // 3: new-line // In case of success 'components' should contain following items: // 0: version number // 1: status code 0 // 2: elections separated by TAB // 3: encrypted votes separated by new-line following list of candidates if (components.Length < 4) { completedEvent(VerificationStatus.Failure); return; } VersionNumber = Convert.ToInt32(components[0]); StatusCode = Convert.ToInt32(components[1]); ErrorMessage = components[2]; if (StatusCode != 0) { completedEvent(VerificationStatus.Failure); return; } string[] elections = components[2].Split('\t'); if (elections.Length < 1) { completedEvent(VerificationStatus.Failure); return; } // separate encrypted votes from candidates, 'components' item count should be at least 2 components = components[3].Split(new string[]{"\n\n"}, StringSplitOptions.None); if (components.Length < 2) { completedEvent(VerificationStatus.Failure); return; } string encryptedVotesString = components[0]; string[] encryptedVotes = encryptedVotesString.Split('\n'); if (encryptedVotes.Length < 1) { completedEvent(VerificationStatus.Failure); return; } _encryptedVotes = new List<EncryptedVote>(); foreach (string encryptedVoteStr in encryptedVotes) { string[] encVoteComponents = encryptedVoteStr.Split('\t'); EncryptedVote encVote = new EncryptedVote(); encVote.ElectionName = encVoteComponents[0]; encVote.EncryptedHex = encVoteComponents[1]; _encryptedVotes.Add(encVote); } string[] candidatesArray = components[1].Split('\n'); if (candidatesArray.Length < 1) { completedEvent(VerificationStatus.Failure); return; } _candidates = new List<Candidate>(); foreach (string candidateStr in candidatesArray) { string[] candidateComponents = candidateStr.Split('\t'); Candidate candidate = new Candidate(); candidate.ElectionName = candidateComponents[0]; candidate.Code = candidateComponents[3]; candidate.Name = candidateComponents[4]; candidate.Party = candidateComponents[5]; _candidates.Add(candidate); } completedEvent(0); })); thread.Start(); }
public void SetDefaultValue() { Trace(); ConnectionId = AnyNewConnectionId; LocalEndPoint = null; Completed = null; AcceptSocket = null; if (segment.Array != null && segment.Count != DefaultSize) BufferManager.Free(ref segment); offsetOffset = DefaultOffsetOffset; count = DefaultSize - DefaultOffsetOffset; bytesTransferred = 0; UserTokenForSending = 0; }
/// <summary> /// 网络操作后台线程 /// </summary> /// <param name="completedEventHandler">完成时调用</param> /// <param name="operation">所需的操作</param> /// <param name="beSendedData">需要发送的数据</param> /// <param name="tryTimes">尝试次数</param> /// <param name="passDown">需要在完成时传给CompletedEventHandler委托的东西</param> public UdpNetworkWorker(CompletedEventHandler completedEventHandler, ExchangeCode operation, byte[] beSendedData, object passDown = null) : base(completedEventHandler, operation, beSendedData, passDown) { }