私は System.NullReferenceException: Object reference not set to an instance of an object を取得します:
var offeredItems = new List<ulong>(Trade.steamMyOfferedItems);
foreach (var item in offeredItems) {
Trade.RemoveItem(item);
}
このようなすべての質問と異なる点は、例外がこのコード ブロックの 3 行目にあることです。Tradeがnullということですか?このチェックをいくつかの操作の前に行っているため、これは奇妙です。
if (Trade != null && Trade.OtherSID == OtherSID) {
OnTradeMessage(message);
return;
}
これの唯一の理由は、Trade が別のスレッドで null にされた (そしてそれは非常に予期しない動作になる) 場合に 5 から 10 の単純な操作の時間であり、これは非常に奇妙です。
編集:
問題は、まったく同じ手順を実行しても再現できないことです。Trade は null でなければならず、他のスレッドで null にする必要があると思います。他に選択肢はありません。愚かな質問で申し訳ありません。
EDIT2:
Trade.RemoveItem
が実行された場合、offeredItems
は空ではないため、 にTrade
なることはできませんnull
。どちらの場合もofferedItems
、1 ~ 2 個の要素を含める必要があります。だから私が知っている(そして理解している)限り:
Trade
is not null
、
Trade
class のオブジェクトでありTrade
、メソッドを持っていますRemoveItem
(例外は、この行で正確にスローされます: Trade.RemoveItem(item);
、 not in RemoveItem
、
RemoveItem
is not null
delegate (このコードはほとんどの場合機能します)