Multithreading

Salam. Kim mənə C#-da Multithreading-i izah edə bilər? Yəni nümunələrlə hansı ki bunu öz layihəsində tətbiq edib.

Verilmiş cavablar və yazılan şərhlər (7 cavab var)

hnatiq (2011-06-12 07:36:16)
DLL variantı olmayan kodlar da var, VB.NET-də birini tapmışam lap superdir

Sevinc Azizova (2011-06-08 15:15:18)
he bilirem cox sag olun. ama orda DLL tapanda ya nedece proqram cox ilisir.

hnatiq (2011-06-08 12:40:07)
Təkcə close buttonunu passiv edən proqram funksiya kimi yazıldığından onun Multithreading - ə heç bir dəxli yoxdur və ümumiyyətlə aktiv və ya passiv edən buttonu da Multithreadingda yazmağa ehtiyac yoxdur, bu system o zaman tətbiq olunur ki proses çox gedir və proses qurtarana qədər formun ilişməsinin qarşısını almaq vacib olur, amma close buttonunun aktiv və ya passiv edilməsi üçün 1 saniyədən də az vaxt lazımdır. yəni ehtiyac yoxdur.

Sevinc Azizova (2011-06-05 17:10:45)
cox sag olun. close buttonunu passiv olmasi proqraminada goresen mutithrewad elva edib duzeltmek olar?

hnatiq (2011-06-04 20:32:13)
Salam. Multithreading proqramlaşdırma bir neçə əməliyyatı yerinə yetirməyə imkan verir, yəni bütün əməliyyatlar bir yerdə icra olunanda form ilişmir. Bu prosessorun 1 saniyədə standart olaraq qəbul olunan 20 millisaniyə fasilə verməsi hesabına baş verir. Nümunəni istəyinizə əsasən C#-da yazdım. amma kiməsə lazım olsa VB.NET-də də bunu yaza bilərəm Forma 4 ədəd button qoyun, hər bir button üçün 100000 dövr quracağıq və bunlar buttonların text-lərinə yazılacaq. Ayrı-ayrı 4 buttonda əməliyyat getməyinə baxmayaraq form ilişməyəcək. [code] using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace WindowsFormsApplication1 { public partial class Form1 : Form { Thread multi1, multi2, multi3, multi4; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false; } private void button1_Click(object sender, EventArgs e) { multi1 = new Thread(new ThreadStart (hesabat1)); multi1.SetApartmentState(ApartmentState.STA); multi1.Start(); } private void button2_Click(object sender, EventArgs e) { multi2 = new Thread(new ThreadStart(hesabat2)); multi2.SetApartmentState(ApartmentState.STA); multi2.Start(); } private void button3_Click(object sender, EventArgs e) { multi3 = new Thread(new ThreadStart(hesabat3)); multi3.SetApartmentState(ApartmentState.STA); multi3.Start(); } private void button4_Click(object sender, EventArgs e) { multi4 = new Thread(new ThreadStart(hesabat4)); multi4.SetApartmentState(ApartmentState.STA); multi4.Start(); } private void hesabat1() { for (int i = 0; i < 100000; i++) { this.button1.Text = Convert.ToString(i); Thread.Sleep(1); } multi1.Abort(); } private void hesabat2() { for (int i = 0; i < 100000; i++) { this.button2.Text = Convert.ToString(i); Thread.Sleep(1); } multi2.Abort(); } private void hesabat3() { for (int i = 0; i < 100000; i++) { this.button3.Text = Convert.ToString(i); Thread.Sleep(1); } multi3.Abort(); } [/code]

hnatiq (2011-06-04 20:28:52)
Salam. Multithreading proqramlaşdırma bir neçə əməliyyatı yerinə yetirməyə imkan verir, yəni bütün əməliyyatlar bir yerdə icra olunanda form ilişmir. Bu prosessorun 1 saniyədə standart olaraq qəbul olunan 20 millisaniyə fasilə verməsi hesabına baş verir. Nümunəni istəyinizə əsasən C#-da yazdım. amma kiməsə lazım olsa VB.NET-də də bunu yaza bilərəm Forma 4 ədəd button qoyun, hər bir button üçün 100000 dövr quracağıq və bunlar buttonların text-lərinə yazılacaq. Ayrı-ayrı 4 buttonda əməliyyat getməyinə baxmayaraq form ilişməyəcək. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace WindowsFormsApplication1 { public partial class Form1 : Form { Thread multi1, multi2, multi3, multi4; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false; } private void button1_Click(object sender, EventArgs e) { multi1 = new Thread(new ThreadStart (hesabat1)); multi1.SetApartmentState(ApartmentState.STA); multi1.Start(); } private void button2_Click(object sender, EventArgs e) { multi2 = new Thread(new ThreadStart(hesabat2)); multi2.SetApartmentState(ApartmentState.STA); multi2.Start(); } private void button3_Click(object sender, EventArgs e) { multi3 = new Thread(new ThreadStart(hesabat3)); multi3.SetApartmentState(ApartmentState.STA); multi3.Start(); } private void button4_Click(object sender, EventArgs e) { multi4 = new Thread(new ThreadStart(hesabat4)); multi4.SetApartmentState(ApartmentState.STA); multi4.Start(); } private void hesabat1() { for (int i = 0; i < 100000; i++) { this.button1.Text = Convert.ToString(i); Thread.Sleep(1); } multi1.Abort(); } private void hesabat2() { for (int i = 0; i < 100000; i++) { this.button2.Text = Convert.ToString(i); Thread.Sleep(1); } multi2.Abort(); } private void hesabat3() { for (int i = 0; i < 100000; i++) { this.button3.Text = Convert.ToString(i); Thread.Sleep(1); } multi3.Abort(); }

Sevinc Azizova (2011-06-02 15:24:50)
sual və sualın başlığı sehv gedib. "Kim mənə C#-da Multithreading-i izah edə bilər? yəni nümunələrlə hansı ki bunu öz layihəsində tətbiq edib" belə olmalı idi