HP Quality Center OTA에 연결할 Windows Form을 작성 중입니다. 시스템에 로그인 할 수 있지만 로그인 버튼을 클릭하면 로그 아웃 한 후 객체의 이전 인스턴스가 다시 초기화되지 않습니다. 동일한 객체를 재사용 할 수있는 방법이 있습니까? 아니면 다른 접근 방식을 취해야합니까?C# Windows Form - 다른 단추에서 개체를 다시 사용하는 방법 Click 이벤트
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를 null로 설정하면 새 TDConnection을 다시 호출해야합니다. 나는 왜 당신이 로그인 코드의 그 줄을 주석 처리했는지 이해할 수 없다. – Steve
안녕하세요, 스티브, 의견에 감사드립니다. 예, 한 번의 반복에서 login_button1_Click 함수 내에서 주석 처리 된 코드를 사용했지만 logout 버튼을 클릭했을 때 범위를 벗어난 tdc 객체를 인식하지 못했습니다. 그래서 저는 tdc를이 두 함수 밖에서 정적 객체로 만들었습니다. 이제 로그인하고 로그 아웃 할 수 있지만 로그인 버튼을 다시 클릭하여 로그 아웃 한 후 ID와 비밀번호를 입력하면 "System.NullReferenceException : 객체 참조가 객체의 인스턴스로 설정되지 않았습니다."오류가 발생합니다. – mkarim
tdc를 정적으로 만들 필요는 없지만 두 가지 다른 방법으로 사용할 수 있으려면 전역 수준에서 선언해야합니다. – Steve