Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Diagnostics;
- using System.Threading;
- namespace Lr
- {
- public class ArrayString
- {
- private string[] arrString { get; set; }
- public ArrayString(string[] arrString)
- {
- this.arrString = arrString;
- }
- public static string MaxString(string[] arrString)
- {
- Console.WriteLine("MaxString запущенно на " + Thread.CurrentThread.ManagedThreadId + " потоцi.");
- int lenghth = 0;
- string maxString = "";
- for (int i = 0; i < arrString.Length; i++)
- {
- if (arrString[i].Length > lenghth)
- {
- lenghth = arrString[i].Length;
- maxString = arrString[i];
- }
- }
- Console.WriteLine("MaxString завершив роботу.");
- return maxString;
- }
- public void ShowArray(int ms)
- {
- Console.WriteLine("ShowArray запущенно на: " + ms + " ms.");
- Thread.Sleep(ms);
- Console.WriteLine("\nМасив рядкiв: ");
- foreach (var item in arrString)
- {
- Console.WriteLine(" " + item + " ");
- }
- Console.WriteLine("ShowArray завершено в потоцi: " + Thread.CurrentThread.ManagedThreadId);
- }
- public void RandomInputArray()
- {
- Console.WriteLine("RandomInputArray запущенно на " + Thread.CurrentThread.ManagedThreadId + " потоцi.");
- Random rnd = new Random();
- string temp = "";
- for (int i = 0; i < arrString.Length; i++)
- {
- for (int j = 0; j < rnd.Next(1, 30); j++)
- {
- temp += Convert.ToChar(rnd.Next('a', 'z')).ToString();
- }
- arrString[i] = temp;
- temp = "";
- }
- Console.WriteLine("RandomInputArray завершив роботу.");
- }
- }
- class Program
- {
- delegate void Action();
- static void Main(string[] args)
- {
- try
- {
- Console.Write("Вкажiть розмiр массива: ");
- int size = int.Parse(Console.ReadLine());
- string[] arrString = new string[size];
- ArrayString arrayString = new ArrayString(arrString);
- Action myActionInput = new Action(arrayString.RandomInputArray);
- myActionInput();
- Action<int> myAction = arrayString.ShowArray;
- IAsyncResult iRes = myAction.BeginInvoke(3000, new AsyncCallback(AsyncCompleted), "");
- myAction.EndInvoke(iRes);
- Func<string[], string> myFunc = ArrayString.MaxString;
- IAsyncResult resultObj = myFunc.BeginInvoke(arrString, new AsyncCallback(AsyncCompleted), "");
- var res = myFunc.EndInvoke(resultObj);
- Console.WriteLine("\nРядок максимальної довжни: {0}", res);
- Console.WriteLine("\nГоловний потiк: " + Thread.CurrentThread.ManagedThreadId);
- }
- catch(Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- Console.ReadKey();
- }
- static void AsyncCompleted(IAsyncResult resObj)
- {
- string mes = (string)resObj.AsyncState;
- Console.WriteLine(mes);
- Console.WriteLine("Работа асинхронного делегата завершена!");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment