バグの原因がわからない

サムネイル
1 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:32:45.747
しかもたまにしか起きない
2 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:33:15.888 ID:AZX6hkl5d
ログ残そう
3 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:33:24.129 ID:yUGGpr+B0
chatGPT先生ならきっと
4 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:33:50.539 ID:T8MMb6HX0
並列処理とかしてる?
5 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:33:58.992 ID:Sqpnw6pKa
偽物だ
7 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:34:43.305 ID:yUGGpr+B0
chatGPT「やる気がないならやめちまえ!」
8 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:36:21.140
タイマーで10ms毎に処理
各処理の最初にタイマーを止めて最後にタイマーを再開にしてる
なのにnullチェックの後ろでたまにnull参照エラーになる
29 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 16:02:51.043 ID:SzTGJJnF0
>>8
C#のタイマで10msが原因だわ
10msの精度なんかでないから同時にイベント発生する
9 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:37:56.541
10じゃなくて100だった
10 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:39:51.262 ID:G2KLyxuU0
ビルギットだけころす機械かよー
11 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:40:32.377
タイマー停止完了までに次の呼び出しがされたらワンチャンあるか
13 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:42:06.107
C#のSystem.Times.Timerっていうのを使ってる
nullチェック対象の変数はタイマー処理内以外では使ってない
14 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:43:02.274
参照は他でもしてる
15 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:43:36.408
タイマー処理の最後にその変数にはnullを入れてる
16 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:43:56.082 ID:eysyRCXL0
バグの原因なんて分からなくていい
解決策だけ分かれば
17 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:44:59.772 ID:AZX6hkl5d
ログ出せばデバッグできそうだけど対処としてはMutexかけて排他かな
21 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:50:06.024 ID:T8MMb6HX0
シングルスレッド?
それともマルチスレッド?
>>17も言ってるようにとりあえずMutexでロックするのが手っ取り早いのでは
19 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:50:03.188 ID:SzTGJJnF0
無理に直そうとするなよ
どんな処理してるのか分からないけど
例外処理入れてnullだったらもう一周すればいいだろ
20 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:50:06.041 ID:AZX6hkl5d
ヌルチェックの前でmutex取ってnull後にmutex解放すれば処理中に別のスレッドがnull入れるの回避できるよ
22 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:52:18.027 ID:K2PtGWbqr
イベント処理?
タイマーなんて使うなよ
設計が悪いだろそれ
24 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:57:24.443
タイマー停止までに次のタイマー処理呼び出しが来たらワンチャンある
25 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 15:58:07.466 ID:i+11jItk0
イベント駆動
処理の中で別の処理を呼んでる
タイマー開放してる
27 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 16:01:58.999
並行状態になってるときがないかログを取って確かめるか
28 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 16:02:31.863
まあ対処だけなら簡単だけど原因を突き詰めたい
仕事でもなんてないし
30 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 16:03:19.999
10じゃなくて100のミス
まあ100も短いからワンチャンあるかもしれんよな
取り敢えずログを取るか
32 名前:匿名のゴリラ 投稿日時:2022/12/10(土) 16:04:35.572 ID:T8MMb6HX0
調べたけどC#のタイマーって並列で動作するからブロック内の処理が100ms以上かかれば普通に2重で処理行われるっぽいね

コメント一覧

タイトルとURLをコピーしました