עבור לתוכן

הפעלת thread עם למבדה ב-C#

Featured Replies

פורסם

יש לי Class שמקבל string ואחד מהמתודות שלו מחזירה

Dictionary<string, string>

אני רוצה לקבל את התוצאה של המתודה הנ"ל כאשר אני עושה את זה ב-Thread נפרד ולכן רשמתי:

כאשר Statistics הוא ה-CLASS שלי ו-getStatistics זו המתודה שמחזירה

<Dictionary<string, string>


Thread<Dictionary<string, string>> myThread = new Thread<Dictionary<string, string>>(
() =>
{
Statistics myClass = new Statistics(path);
return myClass.getStatistics();
});

ואני מקבל שגיאה שאומרת The non-generic type 'System.Threading.Thread' cannot be used with type argument ואני לא מבין למה ומה זה אומר.

עריכה:

בסוף הסתדרתי אבל זה לא נראה כאילו הפעולה באמת נפתחת ב-Thread חדש כי כשהיא מחשבת את מה שהיא צריכה (לפעמים זה לוקח כמה שניות) אז בנתיים כל ה-GUI לא מגיב


private void showStatistics(string path)
{
Statistics myClass = new Statistics(path);


Thread myThread = new Thread(() => myClass.getIpStatistics());
{
foreach (KeyValuePair<string, string> item in myClass.getIpStatistics())
{
listBoxIps.Items.Add(item.Key + item.Value + "\n");
}


myThread.Start();
}
}

פורסם

לא ברור מה עשית כאן... הת'רד שלך אמור לבצע את myClass.getIpStatistics, אבל אתה גם קורא לפונקציה הזו מחוץ לת'רד, ב-foreach.

פורסם
  • מחבר

איך הצורה הנכונה לרשום את זה ?

פורסם
  • מחבר

ליצור את ה-CLASS הזה ולקלוט את ה-LIST שהפונקציה שלו מחזירה ב-THREAD נפרד

וכמובן שאשמח להסבר קצרצר של למה זו לא הסתדר לי ואיך עושים את זה נכון

פורסם

אז למה לא שמת את הקוד של ה-foreach גם כן בתוך הפונקציה שאתה מעביר לת'רד?

פורסם
  • מחבר

חשבתי שאם ה-foreach נמצא בתוך ה-{ אז הוא כן בתוך מה שה-thread יבצע.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים