PDA

View Full Version : چند ريسماني و پردازش يك فايل 3000 سطري



Ebrahim_Rayaneh
دوشنبه 13 مهر 1388, 15:24 عصر
فرض كنيد مي خواهيم برنامه اي بنويسيم كه يك فايل متني (كه حدود 3000 سطر و 4 تا ستون دارد-ستونها با كليد تب از هم جدا شده اند) را از ورودي بگيرد و پردازشهايي را روي سطر هاي فايلمان انجام دهد و سرانجام فايل پردازش شده را در جايي روي ديسك ذخيره كند.اما مشكل اين برنامه اين است كه به محض اجراي برنامه توسط دكمه ي (button) "پردازش" برنامه منجمد (hang) مي كنه.مي دونم كه از چند ريسماني (multiThreading) بايد استفاده كنم،من حتي با اصول كلي و با متدها و خاصيت هاي(propertis) multiThreading آشنايي دارم اما نمي تونم در عمل چه جوري از اون مفاهيم در مورد كدهاي اين برنامه استفاده كنم.كدهاي اين برنامه رو در اينجا مي زارم و اميدوارم كسي پيدا بشه كه اين تكنيك (multiThreading) رو روي كدهاي من اجرا كنه و كدهاي نهايي رو هم در همين جا بذاره!پيشايش ممنون!

double dblScale = double.Parse(txtScale.Text);
string strX1 = null, strY1 = null, strX2 = null, strY2 = null;
double x1, y1, x2, y2;
double dblD;
string[] strArrLines = txtContent.Text.Split('\n');

for (int i = 0; i < strArrLines.Length; i++)
{
for (int j = 0; j < strArrLines.Length; j++)
{
if (strArrLines[j] != null)
{
string[] strWord = strArrLines[j].Split('\t');
for (int k = 1; k < 3; k++)
{
if (strWord[k] != null && strWord[k].Contains("."))
{
if (strX1 == null)
{
strX1 = strWord[k];
}
else if (strY1 == null)
{
strY1 = strWord[k];
}
else if (strX2 == null)
{
strX2 = strWord[k];
}
else if (strY2 == null)
{
strY2 = strWord[k];
}
if (strX1 != null && strX2 != null && strY1 != null && strY2 != null)
{
x1 = double.Parse(strX1);
y1 = double.Parse(strY1);
x2 = double.Parse(strX2);
y2 = double.Parse(strY2);
dblD = Math.Sqrt(Math.Abs((x1 - x2) + (y1 - y2)));
if ((dblD - dblScale) <= 0)
{
strArrLines[j] = null;
strX2 = null;
strY2 = null;
}
}
}
}
}
}
strX1 = null;
strY1 = null;
}
foreach (string str in strArrLines)
{
if (str != null)
{
txtContent.Text += str + "\n";
}
{