Re: [問題] Thread被咬住如何解決?
: 推 singledream: 不要在UI thread做CPU bounding的事情。 07/23 21:58
: → singledream: 這例子一直去頻繁更新UI也是不好的例子就是了, 07/23 21:59
: → singledream: 請把耗時的時間交給背景去做,以下是更改的例子。 07/23 21:59
: → singledream: http://ge.tt/9HD62xK2/v/0?c,有誤請見諒。 07/23 22:00
謝謝回覆 這幾天一直在研究這支程式
但還是有些地方不太清楚....
首先是語法的部份 ==============================================
【1】
async private void button1_Click(object sender, EventArgs e)
{
...
await Task.Run(async () => {...});
...
}
這邊不懂的地方有兩個
1.這async本身就包在一個async裡面了不是嗎
為何要用一個await加上Task.Run這個看似沒有任何作用的東西
再包入一個async才開始真正加入程式碼?
而這部份的問題有可能是因為我沒搞懂Task.Run真正的用途而導致的 @@"
2.為什麼裡面這個async可以直接加上「()」和「=>」這些符號
還有它們的作用是什麼?
【2】
_CurrentContext.Post(new SendOrPostCallback((_) => {...}), null);
這段....老實說....有點....超出理解範圍 |||"orz
但是連查了MSDN都看不懂它們要怎麼使用 爬Google也幾乎找不到相關資料
希望能有詳細一點的解釋還有符號的說明 真是不好意思 OAQ
【3】
await Task.Delay(50);
不太懂這邊加上了Delay的用意 拔掉它也看不出來有什麼明顯的差別 @@"
接著是設計邏輯 ================================================
目前可以看得出來的地方是 不會卡住CPU的地方直接寫出來
可能會咬死的地方則是用async跟await製造出另一個thread
雖然直接看完成的程式可以得到這個結論
但是裡面的語法跟設計期間的邏輯卻還是有點不懂
換句話說就是如果要從零開始重新coding的話很可能會想不到該怎麼做
所以想要知道這樣的過程是怎麼思考出來的
另外 推文也有提到說「一直去頻繁更新UI也是不好的」
那應該怎麼做才對?
除了不斷地去更新它 我實在想不到什麼比較好的辦法 |||"orz
想要好好把這些用法學起來 成為自己用得上手的工具
希望有人或是可以幫我解個惑 謝謝 m(_ _)m
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.101.171
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1438075879.A.5DC.html
※ 編輯: pthuang (114.43.101.171), 07/28/2015 17:33:36
→
07/28 18:48, , 1F
07/28 18:48, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 4 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章