C#、処理を
var task = Task.Run(() => { /*処理*/ }
で囲って、UIにアクセスする時だけ
App.Current?.Dispatcher.Invoke((Action)(() => { /*UI処理*/ }));
ってするだけで、むっちゃ動きが速くなる、たまにおかしくなるので注意
Conversation
Notices
-
Embed this notice
☨もりゃき☨ (moriyaki@fedibird.com)'s status on Tuesday, 19-Dec-2023 10:46:43 JST ☨もりゃき☨ -
Embed this notice
☨もりゃき☨ (moriyaki@fedibird.com)'s status on Tuesday, 19-Dec-2023 10:53:13 JST ☨もりゃき☨ @204504bySE await Task.Run() にするなら、メソッドを async にしなきゃですよね?この辺よく解ってないのですorz
-
Embed this notice
:nonke:団地妻.io:homoo: (204504byse@homoo.social)'s status on Tuesday, 19-Dec-2023 10:53:14 JST :nonke:団地妻.io:homoo: @moriyaki UIスレッドの奪い合いが起きるからね。Task.Run()にすれば確かに抜けられるが…UIの操作とは別に処理が走るのでタイミングによって想定外の結果になるというのは普通に起きる。
UIから呼ぶ処理ならawait Task.Run()とでもした方がまだ無難。これだけでもUIスレッドは空くし、自分でDispatcher.InvokeしなくてもUIスレッドに帰ってくる。
-
Embed this notice