/// <summary> /// Any Task /// </summary> private async Task SendAsync(PrintJobEvent arg) { // Run await Task.Run(() => { Console .WriteLine( $"Run {Thread.CurrentThread.ManagedThreadId} Thread" + $"With {arg.Flag} argument: {arg.StatusMask}"); #region Send Remote Web Api Connection // String Data string data = ""; // Api Adres string api = ""; // Remote Uri Uri uri; try { // Initialize Data Serializer JavaScriptSerializer serializer = new JavaScriptSerializer(); // data set data = serializer.Serialize(arg); // api set api = getAppSetting("api"); // Remote Web Service uri = new Uri(api); // Create a request using a URL that can receive a post. HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); // Request method request.Method = "post"; // Convert POST data to a byte array. byte[] byteArray = Encoding.UTF8.GetBytes(data); // Set the ContentType property of the WebRequest. request.ContentType = "application/json; charset=UTF-8"; request.Accept = "application/json"; // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; // Get the request stream. Stream dataStream = request.GetRequestStream(); // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream object. dataStream.Close(); } catch (Exception) { Console.WriteLine($"Connection Fail {api}"); } #endregion }); }
/// <summary> /// Bind this Window /// </summary> /// <param name="e"></param> private void Bind(PrintJobEvent e) { #region Define Event Data // Job Status [ For example: Spooling ] string stringJobStatus = $"{e.JobStatus}"; // Priority [ For example: 1 ] string stringPriority = $"{e.Priority}"; // Document [ For example: test.pdf ] string stringDocument = $"{e.Document}"; // User [ For example: Jack ] string stringUser = $"{e.Owner}"; // Host [ For example: desktop-computer-100 ] string stringHost = $"{e.HostPrintQueue}"; // JobId [ For example: 50 ] This day print count string stringJobId = $"{e.JobId}"; // Total Pages [ For example: 5 ] Print document pages count string stringTotalPages = $"{e.TotalPages}"; // TimeSubmitted [ For example: 201907181459 ] Print send datetime string stringTimeSubmitted = $"{e.TimeSubmitted}"; #endregion // cref="https://docs.microsoft.com/tr-tr/dotnet/api/system.windows.threading.dispatcher" Dispatcher.Invoke(() => { // Show on his terminating mission if (WindowState == WindowState.Minimized) { WindowState = WindowState.Normal; } lblDocument.Content = stringDocument; lblHost.Content = stringHost; lblJobId.Content = stringJobId; lblJobStatus.Content = stringJobStatus; lblPriority.Content = stringPriority; lblTimeSubmitted.Content = stringTimeSubmitted; lblTotalPages.Content = stringTotalPages; lblUser.Content = stringUser; }); }
/// <summary> /// Hardware Signal /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void Hardware_Signal(object sender, PrintJobEvent e) { #region Define Event Data // Job Status [ For example: Spooling ] string stringJobStatus = $"{e.JobStatus}"; // Priority [ For example: 1 ] string stringPriority = $"{e.Priority}"; // Document [ For example: test.pdf ] string stringDocument = $"{e.Document}"; // User [ For example: Jack ] string stringUser = $"{e.Owner}"; // Host [ For example: desktop-computer-100 ] string stringHost = $"{e.HostPrintQueue}"; // JobId [ For example: 50 ] This day print count string stringJobId = $"{e.JobId}"; // Total Pages [ For example: 5 ] Print document pages count string stringTotalPages = $"{e.TotalPages}"; // TimeSubmitted [ For example: 201907181459 ] Print send datetime string stringTimeSubmitted = $"{e.TimeSubmitted}"; #endregion #region Write Message System.Console.WriteLine ($"" + $"Flag : {e.Flag} \n" + $"Job Status : {stringJobStatus} \n" + $"Priorty : {stringPriority} \n" + $"Document : {stringDocument} \n" + $"User : {stringUser} \n" + $"Host : {stringHost} \n" + $"JobId : {stringJobId} \n" + $"Total Pages : {stringTotalPages} \n" + $"Time Submitted : {stringTimeSubmitted} \n"); #endregion #region Check Signal Flag switch (e.Flag) { case PrintJobEvent.StatusFlag.Paused: break; case PrintJobEvent.StatusFlag.Error: break; case PrintJobEvent.StatusFlag.Deleting: break; case PrintJobEvent.StatusFlag.Spooling: break; case PrintJobEvent.StatusFlag.Printing: break; case PrintJobEvent.StatusFlag.Offline: break; case PrintJobEvent.StatusFlag.Paperout: break; case PrintJobEvent.StatusFlag.Printed: break; case PrintJobEvent.StatusFlag.Deleted: break; case PrintJobEvent.StatusFlag.Blocked_DevQ: break; case PrintJobEvent.StatusFlag.User_Intervention_Req: break; case PrintJobEvent.StatusFlag.Restart: break; case PrintJobEvent.StatusFlag.Continue: // Signal CONTINUE break; case PrintJobEvent.StatusFlag.Finalize: // Signal END break; default: // Signal START if (e.StatusMask == 0 && e.TotalPages == 0) { // First data } break; } #endregion #region Run Other Task Trigger await SendAsync(e.Flag); #endregion }
/// <summary> /// Hardware Signal /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Hardware_Signal(object sender, PrintJobEvent e) { // Bind Event Data Bind(e); Console.WriteLine($"Flag -> {e.Flag} - {e.Size}"); #region Check Signal Flag switch (e.Flag) { case PrintJobEvent.StatusFlag.Paused: break; case PrintJobEvent.StatusFlag.Error: break; case PrintJobEvent.StatusFlag.Deleting: break; case PrintJobEvent.StatusFlag.Spooling: if (e.StatusMask == 8 && e.TotalPages == 0) { finalAndClose(); Console.WriteLine($"1 Pages Printed.[{e.Size}]"); #region Run Other Task Trigger _ = SendAsync(e); #endregion } break; case PrintJobEvent.StatusFlag.Printing: break; case PrintJobEvent.StatusFlag.Offline: break; case PrintJobEvent.StatusFlag.Paperout: break; case PrintJobEvent.StatusFlag.Printed: break; case PrintJobEvent.StatusFlag.Deleted: break; case PrintJobEvent.StatusFlag.Blocked_DevQ: break; case PrintJobEvent.StatusFlag.User_Intervention_Req: break; case PrintJobEvent.StatusFlag.Restart: break; case PrintJobEvent.StatusFlag.Idled: finalAndClose(); Console.WriteLine($"{e.PagesPrinted} Pages Printed.[{e.Size}] Total : {e.TotalPages}"); #region Run Other Task Trigger _ = SendAsync(e); #endregion break; case PrintJobEvent.StatusFlag.Continue: break; case PrintJobEvent.StatusFlag.Finalize: if (e.Size == 0) { finalAndClose(); Console.WriteLine($"{e.PagesPrinted} Pages Printed.[{e.Size}] Total : {e.TotalPages}"); #region Run Other Task Trigger _ = SendAsync(e); #endregion } break; default: break; } #endregion }