ふらっと C#,C♯,C#(初心者用) Part142at TECHふらっと C#,C♯,C#(初心者用) Part142 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト463:デフォルトの名無しさん 19/04/21 13:00:01.62 cgZSyzeqa.net >>455 https://ufcpp.net/study/csharp/sp_thread.html#lock lock文はMonitor.EnterやMonitor.Exitを使った糖衣構文であって Monitor.Enterでロックを取得する(=既にロックされているなら、それが解放されるまで待つ) 例示コードではTask中ではlockしているもののConsole.WriteLine箇所はlockがないので、すぐに実行される 464:デフォルトの名無しさん 19/04/21 13:12:13.25 6I4G/mIH0.net >>455 lockの使い方が間違ってる(>>457)のと、Task.Delay()の使い方が間違ってる。 Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。 後、Task.Run()で作ったタスクが実行開始されたか考慮していないから、大抵はConsole.WriteLine()が先に実行される。 465:デフォルトの名無しさん 19/04/21 14:40:03.19 T6P0EJpRd.net >>441 俺だよ俺 466:デフォルトの名無しさん 19/04/21 15:32:01.70 WZ0UQqME0.net ありがとう、このコードだと欠陥だらけなのか・・・・ 使用箇所ごとにLockが必要なのか、それとタスクより先に次の行が実行されてる可能性が高いのは全く気づいてなかった ただ、 >Task.Delay()は通常awaitして使うがlockステートメント中では使えないので、Task.Delay().Wait()するか代わりにThread.Sleep()にする。 っていうのはどういうことなの?Lock外にスレッドを返されちゃうのかしら? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch