PDA

View Full Version : حرفه ای: اجرای همزمان دو خط کد پشت سر هم



habibb
چهارشنبه 01 آبان 1392, 20:49 عصر
دو خط کد پشت سر هم دارم
یعنی دو دستور
از اونجایی که کامپایلر از بالا به پایین دستورات رو اجرا می کنه ؟
چکار کنم تا این دو دستور که پشت سر هم هستند با هم همزمان اجرا بشن .

CannibalCorpse
چهارشنبه 01 آبان 1392, 20:57 عصر
نمیشه همچین چیزی اتفاق بیفته.احتمالا حالت خیلی خاصی پیش اومده برات.ولی حبیب جان بنظرم باید روال کارت رو عوض کنی.

pedram.11
چهارشنبه 01 آبان 1392, 20:59 عصر
سلام برای اینکار میتونید از ترد استفاده کنید. اون دو خط کد رو هرکدوم رو در یک متد قرار بدید و با ترد بصورت جداگونه هرکدوم رو در یک پروسس اجرا کنید

habibb
چهارشنبه 01 آبان 1392, 21:10 عصر
سلام برای اینکار میتونید از ترد استفاده کنید. اون دو خط کد رو هرکدوم رو در یک متد قرار بدید و با ترد بصورت جداگونه هرکدوم رو در یک پروسس اجرا کنید
حالا 50 لینک توی این سایت وجود داره در مورد Thread :لبخند:
نمیشه یک مثالی بزنید مثلا 2 تا متن توی دو دستور همزمان اضافه بشه به ی تکست باکس توسط یک دکمه:متعجب:

habibb
چهارشنبه 01 آبان 1392, 21:20 عصر
نمیشه همچین چیزی اتفاق بیفته.احتمالا حالت خیلی خاصی پیش اومده برات.ولی حبیب جان بنظرم باید روال کارت رو عوض کنی.
به نظر من حالا موقشه که برم سراغ Thread
هر روش دیگه ای سرعت برنامه رو پایین میاره
فکر می کنم Thread کد رو بهینه تر کنه :چشمک:

pedram.11
چهارشنبه 01 آبان 1392, 21:23 عصر
در مورد ترد باید بگم زمان مشخص نیست، دستور برای انجام عملیات ارسال میشه و اینکه کدوم کد زودتر به پردازشگر ارسال میشه مشخص نیست.
اینم یه مثال:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
AddTextHadndler = AddText;
}

private void button1_Click(object sender, EventArgs e)
{
textBox1.ResetText();
new System.Threading.Thread(new System.Threading.ThreadStart(() => AddText("a"))).Start();
new System.Threading.Thread(new System.Threading.ThreadStart(() => AddText("b"))).Start();
}
delegate void StringHandler(string str);
StringHandler AddTextHadndler;
void AddText(string text)
{
if (InvokeRequired)
BeginInvoke(AddTextHadndler, new object[] { text });
else
{
textBox1.Text += text;
}
}
}

توی رویداد کلیک دکمه دو تا ترد میخوان متن های a و b رو با استفاده از متد AddText به تکستباکس اضافه کنن. اینجا اینکه اول کدوم متن اضافه میشه معلوم نیست(معمولا متن اول زودتر انجام میشه اما گاهی هم خط دوم اول انجام میشه)

pedram.11
چهارشنبه 01 آبان 1392, 21:39 عصر
اصن میشه بفرمائید قصدتون از اجرای همزمان کدا چیه؟!