Kampyuter ilimlari va dasturlash texnologiyalari” kafedrasi


Download 0.51 Mb.
bet3/3
Sana15.03.2023
Hajmi0.51 Mb.
#1269138
1   2   3
Bog'liq
....Algoritm mustaqil ish №4

ReadToEndAsync() metodi kabi .NET Core olamida asinxron tarzda ishlovchi metodlar mavjud va ular sinxron usulda ishlovchi metodlardan farqli ravishda Async qo’shimchasi bilan tugaydi. Biz har bir asinxron metodni chaqirishdan oldin await kalit so’zini ishlatishimiz mumkin. Endi yuqorida berilgan fayldagi ma’lumotlarni asinxron tarzda o’qish jarayonini Main metodi ichida qanday boshlash kerak ekanligini qaraymiz:
namespace AsynAwaitDemo
{
class Program
{
static async Task ReadFileAsync(string file)
{
string content = string.Empty;
using (StreamReader reader = new StreamReader(file))
{
content = await reader.ReadToEndAsync();
}
return content;
}
static async void ContentToConsole()
{
string readFileTask = await ReadFileAsync("c:\\temp\\file.txt");
Console.WriteLine("Fayldagi ma'lumotlar:" + readFileTask);
}
static void Main(string[] args)
{
Task task = new Task(ContentToConsole);
task.Start();
task.Wait();
Console.ReadLine();
}
}
}
Ushbu holatda Main metodi ichida ContentToConsole() jarayonini boshlash uchun Task obyektidan foydalandik va parametr sifatida ushbu nom berildi. ContentToConsole() o’z navbatida asinxron tarzda ishlovchi ReadFileAsync() metodini o’z ichiga olgan va ushbu metod qaytargan qiymatni Console ga chiqarishi bilan jarayon yakunlanadi. Biz asosiy dastur qismini bloklamagan holda nisbatan katta hajmdagi fayllardan ma’lumotlarni o’qish jarayoniga erishdik va bu dastur foydalanuvchisiga ham noqulaylik keltirib chiqarmaydi.
Asinxron dasturlashga bir hayotiy misol: siz yaxshi biladigan Telegram ilovasida ham asinxron dasturlashdan foydalanilgan. Shuning uchun Telegramga hajmi nisbatan kattaroq faylni yuklayotgan paytingizda bir vaqtning o'zida boshqa chatlardagi xabarlarni o'qish, yoki telegramda boshqa jarayonlarni amalga oshirish imkoni bor. Bu bir nechta jarayonlar asinxron tarzda ishlayveradi. Agar telegram dasturida asinxron emas, sinxron dasturlashdan foydalanilganida toki faylni to'la yuklab bo'lgunicha interfeys bloklanib, boshqa hech qanday amal bajarishning imkoni bo'lmasdi.
Asinxron metodlar ko’pchilik holatlarda veb ilovalarda yangi foydalanuvchi yaratish so’rovi yuborilganda yoki ma’lumotlar bazasidan tegishli ma’lumotlarni o’qish jarayonidan ancha qo’l keladi va bu foydalanuvchi interfeysi bilan bog’liq muammolarni ham keltirib chiqarmaydi.

AMALIY QISMI:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace mustaqil_ish_4


{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
class hamdambek
{
public int Id { get; set; }
public string FirstName { get; set; }
public string Lastname { get; set; }
public int Mat { get; set; }
public int inf { get; set; }
public int fizika { get; set; }
public int Use { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{

}


private void button1_Click(object sender, EventArgs e)
{
List employees = new List()
{
new hamdambek() { FirstName = "Hamdambek", Lastname = "Qo'chqarov ", Mat=3,inf=2,fizika=3,Use=8 ,Id = 56},
new hamdambek() { FirstName = "Tohirjon", Lastname = "Allayorov ", Mat=2,inf=3,fizika=5,Use=14,Id = 63},
new hamdambek() { FirstName = "Doston ", Lastname = "Po'latov ", Mat=5,inf=3,fizika=5,Use=12 ,Id = 34},
new hamdambek() { FirstName = "Sunnatilla ", Lastname = "Sharofiddinov ",Mat=4,inf=2,fizika=3,Use=9,Id = 89},
new hamdambek() { FirstName = "Xursand ", Lastname = "Samandarov ", Mat=4,inf=3,fizika=1,Use=8 ,Id = 64},
new hamdambek() { FirstName = "G'ulomjon ", Lastname = "Yo'ldoshev", Mat=3,inf=5,fizika=4,Use=12,Id = 45 },
new hamdambek() { FirstName = "Nodirbek ", Lastname = "Eshqobilov ", Mat=4,inf=2,fizika=3,Use=9,Id = 66 },
new hamdambek() { FirstName = "Ali ", Lastname = " Valiyev ", Mat=5,inf=3,fizika=3,Use=13 ,Id = 10}
};
var Katta = employees.Max(x => x.Use);
var Katta_2 = employees.OrderByDescending(x => x.Use)
.Skip(1)
.First();
richTextBox1.Text = $" F.I.SH |Maktab |
Matematika | informatika | Fizika | Umumiy ball |\n";
var MethodSyntax = employees.OrderBy(x => x.Lastname).ThenBy(x => x.FirstName);
foreach (var emp in MethodSyntax)
{
if (Katta == emp.Use)
{
richTextBox1.Text += $"{emp.FirstName} {emp.Lastname} {emp.Id} {emp.Mat} {emp.inf} {emp.fizika} {emp.Use}\n";
}
}
foreach (var emp in MethodSyntax)
{
if (Katta_2.Use == emp.Use)
{
richTextBox1.Text += $"{emp.FirstName} {emp.Lastname} {emp.Id} {emp.Mat} {emp.inf} {emp.fizika} {emp.Use}\n";
}
}
}
}
}




.

Download 0.51 Mb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling