Facebook
From Obese Hog, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 191
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8.  
  9. namespace zdarzenia
  10. {
  11.     class PrimeFinder
  12.     {
  13.         public delegate void PrimeFoundHandler(MyAsyncCompletedEventArgs args);
  14.         private delegate void PrimeEventHandler(AsyncOperation asyncCallback);
  15.         public event PrimeFoundHandler primeFoundHandler;
  16.         SendOrPostCallback onCompletedCallback;
  17.  
  18.         public PrimeFinder()
  19.         {
  20.             onCompletedCallback = new SendOrPostCallback(Completed);
  21.         }
  22.  
  23.         void Completion(int n,AsyncOperation ao)
  24.         {
  25.             MyAsyncCompletedEventArgs e = new MyAsyncCompletedEventArgs(n, new Exception(), false, new { });
  26.             ao.PostOperationCompleted(onCompletedCallback, e);
  27.         }
  28.    
  29.         private void Completed(object state)
  30.         {
  31.             if (primeFoundHandler != null)
  32.                 primeFoundHandler((MyAsyncCompletedEventArgs)state);
  33.             Console.WriteLine("completed");
  34.         }
  35.  
  36.         public bool isPrimal(int n)
  37.         {
  38.             if (n < 2)
  39.                 return false;
  40.             for (int i = 2; i < n; i++)
  41.                 if (n % i == 0)
  42.                     return false;
  43.             return true;
  44.         }
  45.         public void Find(AsyncOperation ao)
  46.         {
  47.             int n = 10000000;
  48.             while (true)
  49.             {
  50.                 if (isPrimal(n))
  51.                     primeFoundHandler.Invoke(new MyAsyncCompletedEventArgs(n, new Exception(),false, new { }));
  52.                 n++;
  53.             }
  54.             Completion(n, ao);
  55.         }
  56.         public void FindAsync(int taskID)
  57.         {
  58.             AsyncOperation asOp = AsyncOperationManager.CreateOperation(taskID);
  59.             PrimeEventHandler primeEventHandler = new PrimeEventHandler(Find);
  60.             primeEventHandler.BeginInvoke(asOp, null, null);
  61.         }
  62.     }
  63. }
  64.  
  65.  
  66.  
  67.  
  68.  
  69. ////////////////////////
  70.  
  71.  
  72. using System;
  73. using System.Collections.Generic;
  74. using System.Linq;
  75. using System.Text;
  76. using System.Threading.Tasks;
  77.  
  78. namespace zdarzenia
  79. {
  80.    
  81.     class Program
  82.     {
  83.         private static void newPrime(MyAsyncCompletedEventArgs args)
  84.         {
  85.             Console.WriteLine(args.N + "is prime!");
  86.         }
  87.         static void Main(string[] args)
  88.         {
  89.             PrimeFinder primeFinder = new PrimeFinder();
  90.             primeFinder.primeFoundHandler += newPrime;
  91.             primeFinder.Find();
  92.            
  93.         }
  94.     }
  95. }
  96.  
  97.  
  98. /////////////
  99.  
  100.  
  101.  
  102. using System;
  103. using System.Collections.Generic;
  104. using System.ComponentModel;
  105. using System.Linq;
  106. using System.Text;
  107. using System.Threading.Tasks;
  108.  
  109. namespace zdarzenia
  110. {
  111.     class MyAsyncCompletedEventArgs : AsyncCompletedEventArgs
  112.     {
  113.         public int N { get; set; }
  114.         public MyAsyncCompletedEventArgs(int n, Exception e, bool cancelled, object state) : base(e,cancelled,state)
  115.         {
  116.             N = n;
  117.         }
  118.     }
  119. }
  120.  
  121.