WPF(Windows Presentation Foundation)について語るスレ。
前スレ
WPF(.NET, WinUI) GUIプログラミング Part30
https://mevius.5ch.net/test/read.cgi/tech/1667010874/
関連スレ
Windows 10 UWPアプリ開発Part 3
https://mevius.5ch.net/test/read.cgi/tech/1627556967/
コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/
WPF(.NET, WinUI) GUIプログラミング Part31
■ このスレッドは過去ログ倉庫に格納されています
2023/01/22(日) 05:53:16.97ID:oY263ilm
502デフォルトの名無しさん
2023/06/04(日) 14:41:20.86ID:5ce6Kc6V >>498
walk verb (MOVE ON FOOT):
UK /wɔːk/ US /wɑːk/
つまり、アメリカ英語では、walkは、「ワーク」。
日本ではイギリス英語の発音を学ぶので、ウォークだと思っているから
アメリカ英語が聞き取れないのかも。
walk verb (MOVE ON FOOT):
UK /wɔːk/ US /wɑːk/
つまり、アメリカ英語では、walkは、「ワーク」。
日本ではイギリス英語の発音を学ぶので、ウォークだと思っているから
アメリカ英語が聞き取れないのかも。
503デフォルトの名無しさん
2023/06/04(日) 14:45:20.63ID:czXaX9Dj ASUS「エイスースです
504デフォルトの名無しさん
2023/06/04(日) 14:52:30.91ID:GWmzaCfT アザッスだろ!
505デフォルトの名無しさん
2023/06/04(日) 15:19:04.57ID:JbtNWfaw >>501
シークエルはIBMが最初に作ったSQL言語だよ
シークエルはIBMが最初に作ったSQL言語だよ
506デフォルトの名無しさん
2023/06/05(月) 04:51:41.18ID:r1jagHFN オミクロン株が出たときにアメリカのニュース番組でみんな違う発音して混乱してたの思い出した
507デフォルトの名無しさん
2023/06/05(月) 15:46:24.28ID:ALnfamwh とにかく明るい安村のイギリス英語での受け答えはシンプルだったけど完璧だったな
508デフォルトの名無しさん
2023/06/05(月) 21:27:58.61ID:Mg+E0o42 むしろxamlみたいなスクリプト言語が邪魔
509デフォルトの名無しさん
2023/06/06(火) 00:00:15.25ID:gmFbmaxP スクリプト言語じゃねーよ
510デフォルトの名無しさん
2023/06/06(火) 00:53:47.15ID:r2tnqpVo いまだにxamlアレルギーの人いるのか。
jsonかyamlベースのものを追加したら歓迎されたりするのかな。
jsonかyamlベースのものを追加したら歓迎されたりするのかな。
511デフォルトの名無しさん
2023/06/06(火) 02:52:36.71ID:7M0hlYY1 脳の小さい人でも唯一理解できて自己肯定感を高めてくれたのがWinFormsだったんだろうと振り返る
512デフォルトの名無しさん
2023/06/06(火) 13:23:42.87ID:E962Pjai xaml は <>にこだわりすぎてコメント書き辛いのが糞
513デフォルトの名無しさん
2023/06/06(火) 14:41:03.44ID:gmFbmaxP jsonなどコメント自体を書けない仕様
514デフォルトの名無しさん
2023/06/06(火) 14:51:50.08ID:d6hUC8qA >>512
え゛手書きなの?
え゛手書きなの?
515デフォルトの名無しさん
2023/06/06(火) 22:40:57.96ID:t5k+pzJS xamlはxmlだからなあ
インデントだけで1画面食うとかになるとさすがに困る
インデントだけで1画面食うとかになるとさすがに困る
516デフォルトの名無しさん
2023/06/06(火) 23:17:42.80ID:r2tnqpVo そのへんはコードのリファクタリングと似たような感じだな。
コードブロックを関数に切り出すのと同じようにコンポーネントをUserControlに切り出す。
コードブロックを関数に切り出すのと同じようにコンポーネントをUserControlに切り出す。
517デフォルトの名無しさん
2023/06/08(木) 13:43:02.62ID:G8lXV+nt PngBitmapEncoderを非同期で保存する方法はありますか?
await Task.Runだとスレッドエラーになってしまいます
あるいはPNGファイルを非同期で保存する方法を教えてください
await Task.Runだとスレッドエラーになってしまいます
あるいはPNGファイルを非同期で保存する方法を教えてください
518デフォルトの名無しさん
2023/06/08(木) 19:40:27.05ID:5Xv9vbbr >>517
そのままChatGPTに聞けば答えてくれる
そのままChatGPTに聞けば答えてくれる
519デフォルトの名無しさん
2023/06/08(木) 19:59:36.46ID:4Wbqji4r 何のエラーがでるんだろ
単純に書いただけじゃエラーにならないわ
単純に書いただけじゃエラーにならないわ
520デフォルトの名無しさん
2023/06/08(木) 20:02:19.04ID:9AnLl3aH 非同期の書き方が間違ってるに1ペソ
521デフォルトの名無しさん
2023/06/09(金) 09:35:30.47ID:jd4nlL5X ChatGPTに聞いたところ、FileStreamのWriteAsyncに置き換えて書き込めました
ありがとうございます
ありがとうございます
522デフォルトの名無しさん
2023/06/10(土) 01:48:45.17ID:P6Npw7yn どういたしまして
困ったことがあったらまた尋ねに来てくださいね
困ったことがあったらまた尋ねに来てくださいね
523デフォルトの名無しさん
2023/06/10(土) 19:24:56.04ID:qtkeuH21 非同期は難しいね。非同期のつもりが同期してたり。
サンプル拾ってきて動かして挙動確認するのが一番。
サンプル拾ってきて動かして挙動確認するのが一番。
524デフォルトの名無しさん
2023/06/11(日) 01:55:12.82ID:k29VIOYt ConfugureAwait 指定すべきか否かの判断が未だによくわからん
525デフォルトの名無しさん
2023/06/11(日) 09:34:14.95ID:VM7cO91o UIスレッドに戻る必要がある場合はConfigureAwait()なしかtrue指定かということは、
MVVMで作っていたらConfigureAwait(false)だらけでも問題ないのだろうか。
MVVMで作っていたらConfigureAwait(false)だらけでも問題ないのだろうか。
526デフォルトの名無しさん
2023/06/11(日) 10:38:19.76ID:a75z9osJ Dispatcherを使う
527デフォルトの名無しさん
2023/06/11(日) 11:54:47.66ID:4FWqmBm0 そいやConfigureAwaitって使ったことないな
528デフォルトの名無しさん
2023/06/11(日) 18:49:49.54ID:Fv6Y3hW8 初めて見たw
529デフォルトの名無しさん
2023/06/12(月) 13:48:23.01ID:qz0idZVe ConfigurrAwait(true) にしようと思っても、意地でも MVVM にしないやつがいるせいでできない。
WinForms か VB でもやってろよバカと言いたくなる
WinForms か VB でもやってろよバカと言いたくなる
530デフォルトの名無しさん
2023/06/12(月) 13:50:33.63ID:qz0idZVe false だった
531デフォルトの名無しさん
2023/06/12(月) 23:34:58.91ID:wuTw7wyz MVVMでもPropertyChangedしたらUIスレッドでやれって怒られるしどうしようもなくね
532デフォルトの名無しさん
2023/06/13(火) 00:24:07.79ID:Y05jGU7w WPF 限定かもだけど INotifyPropertyChanged.PropertyChanged イベントは
ちゃんと UI スレッドにディスパッチしてくれるようになってる。
非 UI スレッドから VM を操作しても問題ない。
ObservableCollection とかは一工夫いるけど。
(BindingOperations.EnableCollectionSynchronization)
ちゃんと UI スレッドにディスパッチしてくれるようになってる。
非 UI スレッドから VM を操作しても問題ない。
ObservableCollection とかは一工夫いるけど。
(BindingOperations.EnableCollectionSynchronization)
533デフォルトの名無しさん
2023/06/13(火) 00:31:49.19ID:1h3p4bkQ コマンド使えよ
534デフォルトの名無しさん
2023/06/15(木) 15:10:54.81ID:rRvNWqra Task を直接 await しないで下さい。
Task.ConfigureAwait(Boolean) を呼び出して継続の意図を示すことを検討してください。
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/code-analysis/quality-rules/ca2007
Task.ConfigureAwait(Boolean) を呼び出して継続の意図を示すことを検討してください。
https://learn.microsoft.com/ja-jp/dotnet/fundamentals/code-analysis/quality-rules/ca2007
535デフォルトの名無しさん
2023/06/15(木) 16:36:37.39ID:yjHL9xaz 全部trueで困ったことないな
falseにして劇的にパフォーマンスあがったという体感もない
ゲームだとシビアなのかもしれんが多分他にやることあるだろう
falseにして劇的にパフォーマンスあがったという体感もない
ゲームだとシビアなのかもしれんが多分他にやることあるだろう
536デフォルトの名無しさん
2023/06/15(木) 17:51:20.80ID:yjHL9xaz ちょっと実験してわからなくなった
asp.net mvc (クラシック)で自己再帰でthread idとurlをデバッグ出力してDelayするだけのコードを動かした
ConfigureAwait(falae)してないのに戻ってきた後のthread idが変わってる
にもかかわらずコンテキストからurlはちゃんと取れてる
asp.net mvc (クラシック)で自己再帰でthread idとurlをデバッグ出力してDelayするだけのコードを動かした
ConfigureAwait(falae)してないのに戻ってきた後のthread idが変わってる
にもかかわらずコンテキストからurlはちゃんと取れてる
537デフォルトの名無しさん
2023/06/15(木) 17:58:34.24ID:yjHL9xaz continueOnCapturedContext
Boolean
継続をキャプチャされた元のコンテキストにマーシャリングする場合は true。それ以外の場合は false。
元のコンテキストとしか書いてないから同じスレッドに戻る保証はないのか
知らなかった
Boolean
継続をキャプチャされた元のコンテキストにマーシャリングする場合は true。それ以外の場合は false。
元のコンテキストとしか書いてないから同じスレッドに戻る保証はないのか
知らなかった
538デフォルトの名無しさん
2023/06/15(木) 18:32:41.75ID:AU7Lfb35 >>532
なにをどーしたらそんな風になるの?
なにをどーしたらそんな風になるの?
539デフォルトの名無しさん
2023/06/15(木) 23:40:26.44ID:akjjH2QK 何もしなくてもやってくれんじゃん
540デフォルトの名無しさん
2023/06/15(木) 23:54:36.14ID:rRvNWqra C#使ってて思うのは、細かいところ気にしなくても、公式ライブラリ自体が色々配慮してくれてるんだよね。
自分も一層心掛けるわ。
自分も一層心掛けるわ。
541デフォルトの名無しさん
2023/06/16(金) 07:08:56.02ID:g6vkIwv2 >>537
同期コンテキストによるので、
・GUIアプリケーション(の同期コンテキスト)だとtrueで元のスレッドに戻る
・コンソールアプリケーション(の同期コンテキスト)だとtrueでも元のスレッドに戻らない
だったかと。
同期コンテキストによるので、
・GUIアプリケーション(の同期コンテキスト)だとtrueで元のスレッドに戻る
・コンソールアプリケーション(の同期コンテキスト)だとtrueでも元のスレッドに戻らない
だったかと。
542デフォルトの名無しさん
2023/06/19(月) 19:44:51.70ID:qIw288aX https://imgur.com/a/KIpYdS4
心電図(?)作ってみた。
ソケットや共有メモリで他機器からデータ受信してリアルタイム表示。
アイコンは飾り。画像貼ってるだけ。
プログラムはじめて40年以上。まだまだ若いもんには負けねーぜw
心電図(?)作ってみた。
ソケットや共有メモリで他機器からデータ受信してリアルタイム表示。
アイコンは飾り。画像貼ってるだけ。
プログラムはじめて40年以上。まだまだ若いもんには負けねーぜw
543デフォルトの名無しさん
2023/06/20(火) 18:14:26.86ID:mfTYjI5Q やっぱUIデザイナーって専門で必要なのかなと感じた
544デフォルトの名無しさん
2023/06/20(火) 18:51:52.94ID:Op03/FKW545デフォルトの名無しさん
2023/06/20(火) 19:04:46.49ID:UreReEmE x86 (MASM)でGDC直叩きでやってたこと考えると高級言語で出来ちゃう今が
凄いよな。
凄いよな。
546デフォルトの名無しさん
2023/06/20(火) 19:15:29.15ID:LcGR2FrV >>542
グラフ部分の描画はWPF標準のCanvas?
グラフ部分の描画はWPF標準のCanvas?
547デフォルトの名無しさん
2023/06/20(火) 19:52:46.25ID:FDgZeyem548デフォルトの名無しさん
2023/06/20(火) 19:57:28.04ID:FDgZeyem 「俺も同じようなもの作れるわ」
と思っている人の作品見てみると、細かい部分がちゃんと出来て無い
ことが多いです。
細部までちゃんとしているものを作れて無いのに、同じだと思っているだけ。
と思っている人の作品見てみると、細かい部分がちゃんと出来て無い
ことが多いです。
細部までちゃんとしているものを作れて無いのに、同じだと思っているだけ。
549デフォルトの名無しさん
2023/06/20(火) 20:18:02.54ID:SIobN1qD 悔しそうで草
550デフォルトの名無しさん
2023/06/20(火) 20:58:16.66ID:FA7f5bQf551デフォルトの名無しさん
2023/06/20(火) 21:13:52.23ID:UreReEmE https://www.youtube.com/watch?v=sQTcqKGBj1c&ab_channel=MedicalEngineer
これの真似しただけ。アイコン画像もここからコピー。だから解像度も低い。
(アイコンは飾り。画像貼ってるだけ。 って書いておいたけど)
細かいこと言ったら切りないだろ〜。遊びで作ったもんだし。。
canvas にline()で書いてる。
これの真似しただけ。アイコン画像もここからコピー。だから解像度も低い。
(アイコンは飾り。画像貼ってるだけ。 って書いておいたけど)
細かいこと言ったら切りないだろ〜。遊びで作ったもんだし。。
canvas にline()で書いてる。
552デフォルトの名無しさん
2023/06/20(火) 21:24:25.92ID:iJMYm/hz 白い巨塔のバイタル警告音を思い出す
553デフォルトの名無しさん
2023/06/20(火) 22:13:50.37ID:91aDk3JE WPFでWinUI 使っている人いますか?
なんかやり方がよくわからないんだけど
わかりやすいサイトありますか?
なんかやり方がよくわからないんだけど
わかりやすいサイトありますか?
554デフォルトの名無しさん
2023/06/21(水) 03:24:12.51ID:i5eSB4dS555デフォルトの名無しさん
2023/06/22(木) 05:58:37.42ID:d9imgnzP 同じようなものは誰でも作れる。
新創造に価値がある。 畢竟、思想に価値があると言える。
新創造に価値がある。 畢竟、思想に価値があると言える。
556デフォルトの名無しさん
2023/06/22(木) 12:08:51.67ID:f4QrThnD 口だけならなんとでも言える
動いてる物を出せよ無能
動いてる物を出せよ無能
557デフォルトの名無しさん
2023/06/22(木) 20:18:12.49ID:2/GtWGn8 グラフ表示の事か?
基本的な非同期の知識とcanvasに線が書ければ後は頑張り(?)次第。
手練れは頑張りなんて不要なんだろうけど、基本動作まで自分は2時間は掛かった。
始めはWinFormsだったけど勉強がてらWPF版も作ってみた。
後者の方が綺麗で動きもよかった。
自己満足だが真似する時はどれだけそっくりに作れるかこだわると面白い。
基本的な非同期の知識とcanvasに線が書ければ後は頑張り(?)次第。
手練れは頑張りなんて不要なんだろうけど、基本動作まで自分は2時間は掛かった。
始めはWinFormsだったけど勉強がてらWPF版も作ってみた。
後者の方が綺麗で動きもよかった。
自己満足だが真似する時はどれだけそっくりに作れるかこだわると面白い。
558デフォルトの名無しさん
2023/06/22(木) 21:00:45.20ID:CCzLUMWa WPFの描画機能は規模が大きくなると速度低下が激しいのが残念
SkiaSharp等を使えば一応回避出来るけど
SkiaSharp等を使えば一応回避出来るけど
559デフォルトの名無しさん
2023/06/22(木) 22:05:57.96ID:oInj3jkO UWPとWindowsAppSDKだと、Win2DというDirect2Dの公式ライブラリがありますね
一回使ったけど流石に早かった
一回使ったけど流石に早かった
560デフォルトの名無しさん
2023/06/23(金) 00:18:21.51ID:HwDl1XJv DrawingVisualで描画すれば速いよ
561デフォルトの名無しさん
2023/06/25(日) 09:24:47.83ID:RV4PZadR SkiaSharp DrawingVisual あまり資料がないな〜
562デフォルトの名無しさん
2023/06/25(日) 12:00:19.37ID:bsDOU/Dc あまり情報がないものでも、ChatGPTが組み合わせて教えてくれる場合がある。
その場合、複数言語のページの内容を混ぜて回答してくれるのかな?
その場合、複数言語のページの内容を混ぜて回答してくれるのかな?
563デフォルトの名無しさん
2023/06/25(日) 16:20:15.73ID:Avq8WYKk DrawingVisualはWPFの機能でMSのサイトに解説とコードサンプルがあり、リファレンスがあるのだから資料がないということはないだろう
DrawingVisual オブジェクトの使用 - WPF .NET Framework | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/graphics-multimedia/using-drawingvisual-objects
DrawingVisual オブジェクトの使用 - WPF .NET Framework | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/graphics-multimedia/using-drawingvisual-objects
564デフォルトの名無しさん
2023/06/26(月) 20:38:37.00ID:/ad+dyyW565デフォルトの名無しさん
2023/06/26(月) 21:30:09.55ID:/ad+dyyW でもSkiaSharp + OpenGL はハードル高そうだな。
だったらSystem.Drawingの方がいいじゃん。
だったらSystem.Drawingの方がいいじゃん。
566デフォルトの名無しさん
2023/06/26(月) 22:37:30.04ID:Jb1NpiVn >>564の比較はWinFormsで
OpenGLで動かしたい場合はSKControlクラスの代わりにSKGLControlクラスを使うだけで良いみたい
WPFの場合はSKElementクラスだけど、これの性能には触れてないな
OpenGLで動かしたい場合はSKControlクラスの代わりにSKGLControlクラスを使うだけで良いみたい
WPFの場合はSKElementクラスだけど、これの性能には触れてないな
567デフォルトの名無しさん
2023/06/26(月) 22:47:47.73ID:Jb1NpiVn 比較対象が多いページ見つけた
https://swharden.com/csdv/platforms/compare/
https://swharden.com/csdv/platforms/compare/
568デフォルトの名無しさん
2023/06/27(火) 19:40:57.53ID:ZU8ILpLR https://blog.emoji-gen.ninja/posts/20190204/skia.html
>日本語のドキュメントに至っては、ほぼ皆無です。そのため、Skia を使って本格的に開発する場合は、ある程度の覚悟が必要です。
なんだと!!ww
ヤフー知恵袋も質問0 だった。。
>日本語のドキュメントに至っては、ほぼ皆無です。そのため、Skia を使って本格的に開発する場合は、ある程度の覚悟が必要です。
なんだと!!ww
ヤフー知恵袋も質問0 だった。。
569デフォルトの名無しさん
2023/06/27(火) 21:04:13.08ID:ZU8ILpLR 一応、線は引けるけど、非同期コードいれるとcanvasが壊れてるといって落ちる。
あと、XAMLで指定したメソッド以外でどうやって描画するのか不明。
あと、XAMLで指定したメソッド以外でどうやって描画するのか不明。
570デフォルトの名無しさん
2023/06/28(水) 02:24:02.68ID:HaY2f2W2 >>569
SKElementはメソッドやイベントが少なくて超シンプル
https://learn.microsoft.com/en-us/dotnet/api/skiasharp.views.wpf.skelement?view=skiasharp-views-2.88
基本的に、SKElement.PaintSurfaceイベントで描画するだけ
再描画したい場合、InvalidateVisual()を実行すると上記イベントが発生する
SKElementはメソッドやイベントが少なくて超シンプル
https://learn.microsoft.com/en-us/dotnet/api/skiasharp.views.wpf.skelement?view=skiasharp-views-2.88
基本的に、SKElement.PaintSurfaceイベントで描画するだけ
再描画したい場合、InvalidateVisual()を実行すると上記イベントが発生する
571デフォルトの名無しさん
2023/06/28(水) 06:39:28.56ID:+Blkfaog じゃボタンを押したときに線を引かせたいときはそのボタンのイベントハンドラで
InvalidateVisual()実行させて線を引くコードはPaintSurface 内に記述するのか。
なんか面倒だし、PaintSurfaceが巨大化しそう。まぁPaintSurface内で自作関数呼べ
ば良いんだろうけど。
InvalidateVisual()実行させて線を引くコードはPaintSurface 内に記述するのか。
なんか面倒だし、PaintSurfaceが巨大化しそう。まぁPaintSurface内で自作関数呼べ
ば良いんだろうけど。
572デフォルトの名無しさん
2023/06/28(水) 08:32:25.75ID:ngy9I2lE WM_PAINTでの経験が活かされますね
573デフォルトの名無しさん
2023/06/28(水) 09:38:16.64ID:NAypQ388 描画とかボタン処理は同じコンテクストで実行されるから
何も考えずに処理書けばいい
タイマーや通信など他の契機で描画したいなら工夫がいるだけ
何も考えずに処理書けばいい
タイマーや通信など他の契機で描画したいなら工夫がいるだけ
574デフォルトの名無しさん
2023/06/28(水) 14:41:27.72ID:BVdlIcNn 漠∞!!!!
列∞!!!!!
后∞!!!!!!
機∞!!!!!!!
枚∞!!!!!!!!
図∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!!
駅∞!!!!!!!!!!!!
頓∞!!!!!!!!!!!!!
官∞!!!!!!!!!!!!!!
司∞!!!!!!!!!!!!!!!
戸∞!!!!!!!!!!!!!!!!
城∞!!!!!!!!!!!!!!!!!
堺∞!!!!!!!!!!!!!!!!!!
列∞!!!!!
后∞!!!!!!
機∞!!!!!!!
枚∞!!!!!!!!
図∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!!
駅∞!!!!!!!!!!!!
頓∞!!!!!!!!!!!!!
官∞!!!!!!!!!!!!!!
司∞!!!!!!!!!!!!!!!
戸∞!!!!!!!!!!!!!!!!
城∞!!!!!!!!!!!!!!!!!
堺∞!!!!!!!!!!!!!!!!!!
575デフォルトの名無しさん
2023/06/28(水) 19:47:18.96ID:HaY2f2W2 >>573
PaintSurfaceイベント毎に(SKSurfaceクラスやSKCanvasクラスの)オブジェクトが変わるから(変わらないこともある)
ボタンのクリックイベント等で描画するのは無理じゃないかな
PaintSurfaceイベント毎に(SKSurfaceクラスやSKCanvasクラスの)オブジェクトが変わるから(変わらないこともある)
ボタンのクリックイベント等で描画するのは無理じゃないかな
576デフォルトの名無しさん
2023/06/28(水) 19:54:32.34ID:+Blkfaog 求めていたものやっと見つけた。中国サイト。
良くできてるな〜。
await Task.Delayではなく、
SpinWait.SpinUntil(() => false, 1000 / 60); //每秒60帧
だそうだ。こんなの知らんわ。
https://www.dongchuanmin.com/net/3188.html
https://zhuanlan.zhihu.com/p/567618102
良くできてるな〜。
await Task.Delayではなく、
SpinWait.SpinUntil(() => false, 1000 / 60); //每秒60帧
だそうだ。こんなの知らんわ。
https://www.dongchuanmin.com/net/3188.html
https://zhuanlan.zhihu.com/p/567618102
577デフォルトの名無しさん
2023/06/28(水) 20:35:15.51ID:OvMs43YX 中華リンク貼られても見ねーよ
578デフォルトの名無しさん
2023/06/28(水) 23:57:16.98ID:i6K+M06u 中国語、韓国語、ロシア語等、いろいろなページを見てるわ。
579デフォルトの名無しさん
2023/06/29(木) 00:40:34.34ID:Wk17Qk7t DOBON.NET
Thread.SpinWaitメソッドはスレッドの同期のために内部で使用されているようですが、通常は私たちが使用する機会はないでしょう。
Thread.SpinWaitメソッドはスレッドの同期のために内部で使用されているようですが、通常は私たちが使用する機会はないでしょう。
580デフォルトの名無しさん
2023/06/29(木) 00:47:40.82ID:puM++CKl >>576
ビジーウェイト状態になりそうなコードだから試してみたけど、予想に反してCPU時間の消費がそんなでもないな
ただ、環境によってループの頻度が違うみたいだ
.NET7: 毎秒約500回
.NET Framework 4.7.2: 毎秒約1万回
ビジーウェイト状態になりそうなコードだから試してみたけど、予想に反してCPU時間の消費がそんなでもないな
ただ、環境によってループの頻度が違うみたいだ
.NET7: 毎秒約500回
.NET Framework 4.7.2: 毎秒約1万回
581デフォルトの名無しさん
2023/06/29(木) 01:11:48.23ID:0ql7o6ud Win32APIのInitializeCriticalSectionAndSpinCount()みたいな実装をするためのものか。
ほんのちょっと待てばロックを取得できる場合に数千回ループで待って、
できるだけスレッド切り替えにかかる無駄な時間を避ける。
InitializeCriticalSectionAndSpinCount 関数 (synchapi.h) - Win32 apps | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/win32/api/synchapi/nf-synchapi-initializecriticalsectionandspincount
ほんのちょっと待てばロックを取得できる場合に数千回ループで待って、
できるだけスレッド切り替えにかかる無駄な時間を避ける。
InitializeCriticalSectionAndSpinCount 関数 (synchapi.h) - Win32 apps | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows/win32/api/synchapi/nf-synchapi-initializecriticalsectionandspincount
582デフォルトの名無しさん
2023/06/29(木) 06:25:02.66ID:ejYRoEqU >>578
他国でもソースは同じだもんな。
他国でもソースは同じだもんな。
583デフォルトの名無しさん
2023/06/29(木) 07:36:02.98ID:G16HAkDq 匿名掲示板に貼られた中華リンクのソースが必ず正しいと思ってるやつがいるのはおめでてーな
584デフォルトの名無しさん
2023/06/29(木) 10:00:47.73ID:df8BmqTV MSの翻訳は糞だから日本語のMS公式観るより
英語のMS公式観た方が良いのは事実
英語のMS公式観た方が良いのは事実
585デフォルトの名無しさん
2023/06/29(木) 10:16:30.19ID:e/2/rrz3 匿名掲示板の中華リンクと公式の英語を同一視してるやつやべーな
586デフォルトの名無しさん
2023/06/29(木) 11:10:54.33ID:df8BmqTV そんなやついたか?
587デフォルトの名無しさん
2023/06/29(木) 11:44:14.93ID:ejYRoEqU 碌に読んでないの多いよな。
>中華リンクのソースが必ず正しいと思ってるやつがいる
リンク張っただけなのにコレだもん。
>中華リンクのソースが必ず正しいと思ってるやつがいる
リンク張っただけなのにコレだもん。
588デフォルトの名無しさん
2023/06/29(木) 11:56:50.12ID:IrCo4C0s ページ自体はまともでも、そこに貼られてる広告がヤバそう(偏見
589デフォルトの名無しさん
2023/06/29(木) 11:59:03.18ID:3KkF7hHh 悔しそうで草
590デフォルトの名無しさん
2023/06/29(木) 18:30:52.58ID:puM++CKl >>576
このコードでSpinWait.SpinUntil()で待機させるメリットって何だろう
Dispatcher.Invoke()してるから1ループの実行時間は結構ばらつくし、Thread.Sleep()で十分な気がするのだけど
精度を出すなら、System.Timers.Timer使った方が良いし
このコードでSpinWait.SpinUntil()で待機させるメリットって何だろう
Dispatcher.Invoke()してるから1ループの実行時間は結構ばらつくし、Thread.Sleep()で十分な気がするのだけど
精度を出すなら、System.Timers.Timer使った方が良いし
591デフォルトの名無しさん
2023/06/29(木) 18:58:35.73ID:AdXw454n 60フレームだそうとしてるのになんともいえん感じにはなる
592デフォルトの名無しさん
2023/06/29(木) 20:40:19.95ID:puM++CKl >>590
Thread.Sleep()で十分な気がするって書いたけど、
実際に試すとSpinWait.SpinUntil()のままよりThread.Sleep()に置き換えた方が明らかにFPS向上するなw
PCに負荷をかけたらまた違うのかねぇ
Thread.Sleep()で十分な気がするって書いたけど、
実際に試すとSpinWait.SpinUntil()のままよりThread.Sleep()に置き換えた方が明らかにFPS向上するなw
PCに負荷をかけたらまた違うのかねぇ
593デフォルトの名無しさん
2023/06/29(木) 21:07:27.01ID:ejYRoEqU await task.delay ()だと例外で落ちるから。
594デフォルトの名無しさん
2023/06/30(金) 03:50:01.15ID:G8RX/6Lm >>593
InvalidateVisual()呼ぶだけならUIスレッドで実行されるように気を付ければawait Task.Delay()で問題無いよ。
InvalidateVisual()呼ぶだけならUIスレッドで実行されるように気を付ければawait Task.Delay()で問題無いよ。
595デフォルトの名無しさん
2023/06/30(金) 07:00:48.53ID:ClIVzebM よーし何か作ってみよう〜
596デフォルトの名無しさん
2023/06/30(金) 19:36:32.72ID:ClIVzebM ここ という所で1sec wait掛けたい。どうすんだ?
public MainWindow(){
Task.Run(() =>{
try{
while (true){
Dispatcher.Invoke(() => {
canvas.InvalidateVisual(); });
_ = SpinWait.SpinUntil(() => false, 10); //每秒60帧
}
}
catch (Exception e){
}
});
}
void OnPaintSample(object sender, SKPaintSurfaceEventArgs e){
Render (e.Surface.Canvas );
}
public void Render (SKCanvas canvas){
SKPaint thickLinePaint = new SKPaint{
Style = SKPaintStyle.Stroke,
Color = SKColors.Orange,
StrokeWidth = 1
};
for (int x=0;x<=600;x++){
canvas.DrawLine(x, 0, x,100, thickLinePaint);
// ここ
}
}
public MainWindow(){
Task.Run(() =>{
try{
while (true){
Dispatcher.Invoke(() => {
canvas.InvalidateVisual(); });
_ = SpinWait.SpinUntil(() => false, 10); //每秒60帧
}
}
catch (Exception e){
}
});
}
void OnPaintSample(object sender, SKPaintSurfaceEventArgs e){
Render (e.Surface.Canvas );
}
public void Render (SKCanvas canvas){
SKPaint thickLinePaint = new SKPaint{
Style = SKPaintStyle.Stroke,
Color = SKColors.Orange,
StrokeWidth = 1
};
for (int x=0;x<=600;x++){
canvas.DrawLine(x, 0, x,100, thickLinePaint);
// ここ
}
}
597デフォルトの名無しさん
2023/06/30(金) 19:37:34.75ID:ClIVzebM 書き忘れ
skiasharp .netframework.
skiasharp .netframework.
598デフォルトの名無しさん
2023/06/30(金) 21:02:19.59ID:k2cLJ2r8 フレームごとに呼ばれるシステムはフレームイベント内部でwaitさせるんじゃなくて
何フレーム目かとかの時間情報を持たせてその時間基準で全部描画するもの
何フレーム目かとかの時間情報を持たせてその時間基準で全部描画するもの
599デフォルトの名無しさん
2023/06/30(金) 21:18:03.73ID:ClIVzebM へー。今まで(?)の手法とは違うんですね。
難しい〜。
難しい〜。
600デフォルトの名無しさん
2023/06/30(金) 21:40:58.12ID:G8RX/6Lm601デフォルトの名無しさん
2023/06/30(金) 21:46:05.66ID:ClIVzebM ほう。ご丁寧にソースまで。ありがとう!!
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も ★2 [1ゲットロボ★]
- ナルシスト高市早苗、「汚い首」と言われたのがメチャクチャ効いて激昂反発か。関係修復は絶望的に…😰 [153490809]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
- ただいま会社でうんこ中(´・ω・`)
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- んなっても良いお🏡
- 【悲報】高市早苗を妄信している今の日本人見ると80年前も市民は進んで戦争協力してたんだって理解出来るよね🥺 [616817505]
