C# Windows 表单 - 如何重用来自不同按钮单击事件的对象

C# Windows Form - How to Reuse an Object from a Different Button Click Event

我正在构建一个 Windows 表单,用于连接到 HP Quality Center OTA。我能够登录到系统,但是当我单击“登录”按钮时注销后,该对象的前一个实例不会重新初始化。有没有办法重用同一个对象,或者我应该采用不同的方法?这是代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TDAPIOLELib;

namespace TestLab
{


public partial class Form1 : Form
{

    static TDConnection tdc = new TDConnection();
    static String qcUrl = "https://serveraddress/qcbin";
    static string uid;
    public Form1()
    {
        InitializeComponent();
    }

    private void login_button1_Click(object sender, EventArgs e)
    {
        uid = Microsoft.VisualBasic.Interaction.InputBox("Enter your User ID", "User ID", " ", 0, 0);
        string pwd1 = Microsoft.VisualBasic.Interaction.InputBox("Enter your password", "Password", " ", 0, 0);

   //     TDConnection tdc = new TDConnection();
        tdc.InitConnectionEx(qcUrl);
        tdc.Login(uid, pwd1);

        label1.Text = " ";
        label1.Text = uid + " logged into HPQC.";

    }

    private void label1_Click(object sender, EventArgs e)
    {

    }

    private void logout_button1_Click(object sender, EventArgs e)
    {
        tdc.Logout();
        tdc.Disconnect();
        tdc = null;
        label1.Text = " ";
        label1.Text = uid + " logged out of HPQC.";
    }
}

}

在注销代码中,您将全局变量 tdc 设置为空。当然,这意味着您需要通过调用 new TDConnection

来重新初始化它

你似乎有两个选择。

  1. 移除注销中将tdc变量设置为null的行 代码。保持其他一切不变
  2. 不要在全局级别初始化变量 tdc 而只是 每次输入登录代码并在注销代码中保留将变量 tdc 设置为 null 的行。

还要考虑这些类型的对象通常实现 IDisposable 接口。如果它与您的 TDConnection class 相同,那么最好在注销代码中调用 Dispose 方法