Vla_DOS

Untitled

Sep 9th, 2022 (edited)
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.70 KB | None | 0 0
  1. using System;
  2. using System.Diagnostics;
  3. using System.Threading;
  4.  
  5. namespace Lr
  6. {
  7.     public class ArrayString
  8.     {
  9.         private string[] arrString { get; set; }
  10.  
  11.         public ArrayString(string[] arrString)
  12.         {
  13.             this.arrString = arrString;
  14.         }
  15.  
  16.         public static string MaxString(string[] arrString)
  17.         {
  18.             Console.WriteLine("MaxString запущенно на " + Thread.CurrentThread.ManagedThreadId + " потоцi.");
  19.  
  20.             int lenghth = 0;
  21.             string maxString = "";
  22.             for (int i = 0; i < arrString.Length; i++)
  23.             {
  24.                 if (arrString[i].Length > lenghth)
  25.                 {
  26.                     lenghth = arrString[i].Length;
  27.                     maxString = arrString[i];
  28.                 }
  29.             }
  30.             Console.WriteLine("MaxString завершив роботу.");
  31.  
  32.             return maxString;
  33.         }
  34.  
  35.         public void ShowArray(int ms)
  36.         {
  37.             Console.WriteLine("ShowArray запущенно на: " + ms + " ms.");
  38.             Thread.Sleep(ms);
  39.             Console.WriteLine("\nМасив рядкiв: ");
  40.  
  41.             foreach (var item in arrString)
  42.             {
  43.                 Console.WriteLine(" " + item + " ");
  44.             }
  45.             Console.WriteLine("ShowArray завершено в потоцi: " + Thread.CurrentThread.ManagedThreadId);
  46.         }
  47.  
  48.         public void RandomInputArray()
  49.         {
  50.             Console.WriteLine("RandomInputArray запущенно на " + Thread.CurrentThread.ManagedThreadId + " потоцi.");
  51.  
  52.             Random rnd = new Random();
  53.             string temp = "";
  54.             for (int i = 0; i < arrString.Length; i++)
  55.             {
  56.                 for (int j = 0; j < rnd.Next(1, 30); j++)
  57.                 {
  58.                     temp += Convert.ToChar(rnd.Next('a', 'z')).ToString();
  59.                 }
  60.                 arrString[i] = temp;
  61.                 temp = "";
  62.             }
  63.             Console.WriteLine("RandomInputArray завершив роботу.");
  64.  
  65.         }
  66.     }
  67.  
  68.     class Program
  69.     {
  70.         delegate void Action();
  71.  
  72.         static void Main(string[] args)
  73.         {
  74.             try
  75.             {
  76.                 Console.Write("Вкажiть розмiр массива: ");
  77.                 int size = int.Parse(Console.ReadLine());
  78.                 string[] arrString = new string[size];
  79.  
  80.                 ArrayString arrayString = new ArrayString(arrString);
  81.  
  82.                 Action myActionInput = new Action(arrayString.RandomInputArray);
  83.                 myActionInput();
  84.  
  85.                 Action<int> myAction = arrayString.ShowArray;
  86.                 IAsyncResult iRes = myAction.BeginInvoke(3000, new AsyncCallback(AsyncCompleted), "");
  87.                 myAction.EndInvoke(iRes);
  88.  
  89.                 Func<string[], string> myFunc = ArrayString.MaxString;
  90.  
  91.                 IAsyncResult resultObj = myFunc.BeginInvoke(arrString, new AsyncCallback(AsyncCompleted), "");
  92.                 var res = myFunc.EndInvoke(resultObj);
  93.  
  94.                 Console.WriteLine("\nРядок максимальної довжни: {0}", res);
  95.  
  96.                 Console.WriteLine("\nГоловний потiк: " + Thread.CurrentThread.ManagedThreadId);
  97.  
  98.             }
  99.             catch(Exception ex)
  100.             {
  101.                 Console.WriteLine(ex.Message);
  102.             }
  103.  
  104.             Console.ReadKey();
  105.         }
  106.  
  107.         static void AsyncCompleted(IAsyncResult resObj)
  108.         {
  109.             string mes = (string)resObj.AsyncState;
  110.             Console.WriteLine(mes);
  111.             Console.WriteLine("Работа асинхронного делегата завершена!");
  112.         }
  113.     }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment