トップページ > プログラム > 2017年10月15日 > XWjA+gHr

書き込み順位&時間帯一覧

18 位/178 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000111100000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net

書き込みレス一覧

C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
920 :デフォルトの名無しさん[sage]:2017/10/15(日) 13:55:30.87 ID:XWjA+gHr
staticタスクをwhileでずっと回してデータリストのデータを監視しててエラーがあったら注意喚起のフォームを開いたりフォームのラベルを変更したりしたいんだけど
staticだからタスクからインヴォーク使えないし、メインフォームに作ったフォーム開いたりするメソッドをデリゲートしようとしても静的フィールド〜でできなくて詰まった・・・

設計見直したほうがいいレベル?
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
925 :デフォルトの名無しさん[sage]:2017/10/15(日) 14:46:56.01 ID:XWjA+gHr
□メインフォーム
データリストを保持してる
一定間隔でデータリストをデータベースから取ってきて更新する

□バックグラウンドタスク
メインフォームのコンストラクタで起動する
メインフォームを閉じるまでwhileで動き続ける
メインフォームのデータリストに異常値を見つけたら注意喚起フォームを開く

□注意喚起フォーム
データが異常値だから直せ〜のメッセージが表示してある
オーナーはメインフォーム

バックグラウンドタスクのメソッド上で注意喚起フォームを普通に開こうとしたらクロススレッド〜で開けない
タスク上にインヴォークを記述するのはタスクがスタティックだから使えない
フォームを開く処理をメインフォームに書いてタスクにデリゲート処理を記述するのもタスクがスタティックだから静的なフィールド〜でできない
メインフォームはスタティックじゃないけど作りの問題でタスク側でnewするわけにはいかない

どうやってタスクからイベントを投げてメインフォームでハンドルすればいいか教えてください

>>922
これで理解できる?
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
928 :デフォルトの名無しさん[sage]:2017/10/15(日) 15:10:29.08 ID:XWjA+gHr
static修飾子知らないってマジモンの素人やん
そら説明しても理解できませんわ

>>923
ありがとう
ちょっと調べてみる!
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
936 :デフォルトの名無しさん[sage]:2017/10/15(日) 16:31:43.29 ID:XWjA+gHr
>>930
コンストラクタで起動するのが気持ちわるいのは超同意
でもコンストラクタで立ち上げて常駐する形じゃないとダメー!!!らしいのでしゃーなしでやってる
タスクの処理をUIスレッドでawaitして返り値で処理するのを繰り返す形が正解なのは理解してるんだけど

>>932
ぶっちゃけボタンかタイマーで起動してawait繰り返せば済むしコードも読みやすいし実装も楽だし拡張性も上がるんだけど
「おじいちゃんはバックグラウンドという言葉が大好き」なのでしょうがない


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。