我正在使用.NET 4.5 TestTools和Visual Studio 2010进行一些测试。我正在测试一个在构造/初始化期间在某处创建COM实例的单例类,因此类状态将保持不变试验。问题是,每个测试都运行自己,运行所有测试会产生一个奇怪的结果 - 第一次测试成功,所有其他测试失败
" System.Runtime.InteropServices.InvalidComObjectException:COM对象 与基础RCW分离的,不能使用.."
COM引用损坏的结果(请参阅下面的myComInstance)。
我不确定我是否正确解释了问题。下面是我的单身课程
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace APITestTrial3
{
public partial class frmMbxControl : Form
{
private frmMbxControl()
{
InitializeComponent();
Connect("abhishek281mbx","PCMBXsrv.281","appmat1.bsd.com");
}
private static frmMbxControl g_Mbx;
public static frmMbxControl GetMbx()
{
if (g_Mbx == null)
{
g_Mbx = new frmMbxControl();
}
return g_Mbx;
}
private string Connect(string mbxName, string serverName, string hostName)
{
// frmControls frm = new frmControls();
mbx.HostName = hostName;
mbx.MbxName = mbxName;
mbx.ServerName = serverName;
mbx.replybox = "replyBox";
if (mbx.Status != 0)
{
if (mbx.Connect())
{
Console.WriteLine("Connected");
return ("Connected");
}
else
{
return ("Not Connected");
}
}
return ("Connected");
}
public String Send(String txnName, String txn)
{
String msgReply = "";
String rep = "";
//mbx.Send(txnName, txn);
mbx.Open("ReplyBox1","c");
mbx.SendAndReply(txnName, txn, "ReplyBox1");
if (mbx.WaitForMsg("ReplyBox1", 0, ref msgReply, ref rep) == CwMboxLib.CwWaitResult.CwWaitOk)
{
rep = msgReply;
mbx.Close("ReplyBox1");
}
return msgReply;
}
private void frmMbxControl_Load(object sender, EventArgs e)
{
}
}
}
另一个类使用上面类的GetMbx()和Send()方法。