<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Task Async: לולאה שמחזירה את התוצאות בצורה אסינכרונית]]></title><description><![CDATA[<p dir="rtl">יש לי פונקציה שרצה על מערך של מילים (תוצאות חיפוש), ועל כל איבר במערך היא הולכת למקור ולוקחת משם את הקטע בו מופיעה המילה, כדי להציג אותו למשתמש.<br />
אני רוצה שעל כל איטרציה בלולאה - התשובה תחזור מיד ותוצג בUI ולא יצטרכו לחכות עד שהלולאה תיגמר.<br />
ראיתי בעבר שיש אפשרות לעשות זאת ע"י שימוש בTASK async אך אני לא מצליח למצוא בגוגל איך..<br />
(וגם לא איפה ראיתי זאת..)<br />
אם מישהו יודע איך - אשמח לשמוע.<br />
תודה רבה!</p>
<p dir="rtl"><em>פורסם במקור בפורום CODE613 ב17/05/2016 23:27 (+03:00)</em></p>
]]></description><link>https://tchumim.com/topic/986/task-async-לולאה-שמחזירה-את-התוצאות-בצורה-אסינכרונית</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 12:54:16 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/986.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jan 2018 11:25:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Task Async: לולאה שמחזירה את התוצאות בצורה אסינכרונית on Mon, 29 Jan 2018 11:25:12 GMT]]></title><description><![CDATA[<p dir="rtl">תודה רבה רבה לשניכם!!<br />
עובד מעולה!</p>
<p dir="rtl"><em>פורסם במקור בפורום CODE613 ב18/05/2016 00:39 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/6482</link><guid isPermaLink="true">https://tchumim.com/post/6482</guid><dc:creator><![CDATA[avr416]]></dc:creator><pubDate>Mon, 29 Jan 2018 11:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to Task Async: לולאה שמחזירה את התוצאות בצורה אסינכרונית on Mon, 29 Jan 2018 11:25:11 GMT]]></title><description><![CDATA[<p dir="rtl">גישה לUI מTask כמו מטריד מחייבת קריאה לDispatcher. לכן גם yield לא יעזור כאן כי הUI יקפא עד לסיום הזרימה.<br />
הנה קוד דוגמה:</p>
<pre><code>public ObservableCollection&lt;int&gt; Collection { get; set; } = new ObservableCollection&lt;int&gt;();

private void button_Click(object sender, RoutedEventArgs e)
{
    Task.Run(() =&gt; getAll());
}

void getAll()
{
    for (int i = 0; i &lt; 3; i++)
    {
        Thread.Sleep(1000);
        Dispatcher.Invoke(() =&gt; Collection.Add(i));
    }
}
</code></pre>
<p dir="rtl">אבל אכן מה שארכיטקט הצביע על מעלת הyield לעבד את התוצאה תוך כדי עיבוד השאר עוזר להפרדה בין לוגיקת הלולאה לבין הטיפול בתוצאת כל איטרציה, הנה שינוי להמחשה:</p>
<pre><code>public ObservableCollection&lt;int&gt; Collection { get; set; } = new ObservableCollection&lt;int&gt;();

private void button_Click(object sender, RoutedEventArgs e)
{
    Task.Run(() =&gt;
    {
        foreach (var item in getYield())
            Dispatcher.Invoke(() =&gt; Collection.Add(item));
    });
}

IEnumerable&lt;int&gt; getYield()
{
    for (int i = 0; i &lt; 3; i++)
    {
        Thread.Sleep(1000);
        yield return i;
    }
}
</code></pre>
<p dir="rtl">זה אכן הרבה יותר טוב שהמתודה שעושה את העבודה לא דואגת לבעיות הUI של WPF.</p>
<p dir="rtl"><em>פורסם במקור בפורום CODE613 ב18/05/2016 00:22 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/6481</link><guid isPermaLink="true">https://tchumim.com/post/6481</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 11:25:11 GMT</pubDate></item><item><title><![CDATA[Reply to Task Async: לולאה שמחזירה את התוצאות בצורה אסינכרונית on Mon, 29 Jan 2018 11:25:10 GMT]]></title><description><![CDATA[<p dir="rtl">תנסה לחפש על</p>
<blockquote>
<p dir="auto">yield return c#</p>
</blockquote>
<p dir="rtl">יש לך </p><div class="embed-wrapper"><div class="embed-container"><iframe src="https://www.youtube.com/embed/4fju3xcm21M" frameborder="0" allowfullscreen></iframe></div></div> סרטון שמסביר היטיב על המושג, ייתכן שזה יעזור לך אם אתה עובד עם WPF ויש לך שליטה על האירועים של זרימת החומר.<p></p>
<p dir="rtl">בהצלחה.</p>
<p dir="rtl"><em>פורסם במקור בפורום CODE613 ב18/05/2016 00:07 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/6480</link><guid isPermaLink="true">https://tchumim.com/post/6480</guid><dc:creator><![CDATA[ארכיטקט]]></dc:creator><pubDate>Mon, 29 Jan 2018 11:25:10 GMT</pubDate></item></channel></rss>