1

私はいくつかのコードを持っています:

using(var userlookup = new UserLookup())
{
    someThing = someCollection
                     .Select(t =>
                     {
                        var user = userLookup.UserLookup(t.UserId);
                        新しいラッパーを返す
                        {
                           UserString = string.Format("{0} {1} ({2})",
                                          user.FirstName、user.LastName、t.UserId)、
                           SomeOtherProperty = t.SomeFunction()
                           等..
                        };
                     });
}

someThingアクセスすると、ObjectDisposedException. これは、using ブロックを削除することで解決できます。私がこれを行う場合:

  1. UserLookupLinq列挙型が破棄されると破棄されますか?
  2. もしそうなら、これはどのように起こりますか?
  3. このコードを再構築してUserLookup、列挙型が破棄されたときにインスタンスを破棄する方法はありますか?

(使用ブロック内で ToList() を呼び出すことができると確信しており、それは正常に機能します。おそらくそうするでしょうが、好奇心のために)

someThingまた、これは MVC ビュー モデルのプロパティであることに言及する必要があります。

4

1 に答える 1

1

遅延実行を維持しながら列挙型が破棄されるときに、このコードを再構築して UserLookup インスタンスを破棄する方法はありますか?

UserLookupこのシーケンスを生成するメソッドにインスタンスを渡し、結果の処理が完了したら破棄する必要があります。

(使用ブロック内で ToList() を呼び出すことができると確信しており、それは正常に機能します。おそらくそうするでしょうが、好奇心のために)

はい、これにより、列挙型が破棄される前に完全に実行さUserLookupれ、問題が回避されます。

于 2013-05-02T23:31:33.433 に答える