1

私は 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 個の要素を含める必要があります。だから私が知っている(そして理解している)限り:

Tradeis not nullTradeclass のオブジェクトでありTrade、メソッドを持っていますRemoveItem(例外は、この行で正確にスローされます: Trade.RemoveItem(item);、 not in RemoveItemRemoveItemis not nulldelegate (このコードはほとんどの場合機能します)

4

1 に答える 1