5

私はVB.Net 2012に変換しているvb6 COMオブジェクトを持っています

私のサンプルコードは以下のようになります:

Dim ObjContext ,objx ,objy As Object

Dim Rs As ADODB.Recordset

Set ObjContext = GetObjectContext

Set objx =ObjContext.CreateInstance("abc.class1")

Set Objy = ObjContext.CreateInstance("abcde.class2")


Set Rs = objx.getvalue(query)

 If Rs.EOF And Rs.BOF Then

      ObjContext.SetAbort
        Set objx = Nothing
        Set ObjContext = Nothing
        Set Objy = Nothing

  End If

VB 2012 の GetObjectContext() と createinstance() に相当するものは何ですか?

この概念を.netから削除するにはどうすればよいですか?

4

2 に答える 2

1

ObjectContext.CreateInstance は、Microsoft Transaction Server (MTS) にさかのぼります。COM+ では、オブジェクト コンテキストを介してオブジェクトを作成する必要がなくなったようです。COM+ では、通常の CreateObject() が正しいことを行います。

ここでこの情報を見つけました: http://blogs.msdn.com/b/deva/archive/2012/01/19/com-mts-custom-application-createobject-or-createinstance.aspx

そのブログが消えた場合に備えて、ここに内容をそのまま記載します。

最近、私は Visual Basic/COM+ ベースのソリューション (内部的に Microsoft Messaging ライブラリを使用) を作成した開発者の顧客と仕事をしていました。一般的に、彼は CreateObject または CreateInstance のどちらを使用する必要があるかを知りたがっています。両方が COM+ で同じ効果を持つのか、異なる効果を持つのか?

Microsoft Transaction Server (MTS) では、ルート オブジェクトで ObjectContext.CreateInstance を使用して、トランザクションが流れるようにセカンダリ オブジェクトを作成する必要があります。COM+ ではこれは引き続き機能しますが、これを行う必要はなくなりました。COM+ では、CreateObject は ObjectContext.CreateInstance の機能を包含します。作成されたオブジェクトは、呼び出し元のアクティビティに参加します。COM+ では、Microsoft Visual Basic の標準の CreateObject 関数を使用して、必要に応じてトランザクションをセカンダリ オブジェクトに流すことができます。したがって、CreateObject と CreateInstance は COM+ で同じ効果を持ちます。

于 2015-07-16T22:04:46.307 に答える