HP Quality Center OTAに接続するWindowsフォームを構築しています。私はシステムにログインすることができますが、ログインボタンをクリックするとログアウトした後、オブジェクトの前のインスタンスは再初期化されません。同じオブジェクトを再利用する方法はありますか、それとも別の方法がありますか?C#Windowsフォーム - 別のボタンからオブジェクトを再利用する方法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
こんにちはスティーブ、フィードバックありがとう。はい、1回の反復でlogin_button1_Click関数内でコメント付きコードを使用しましたが、ログアウトボタンをクリックすると、スコープ外だったのでtdcオブジェクトが認識されませんでした。だから私はtdcをこれら2つの機能の外にある静的オブジェクトとして作った。ログインとログアウトは初めてですが、ログインボタンを再度クリックしてログアウトした後、IDとパスワードを入力すると「System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが表示されます。 – mkarim
tdcを静的にする必要はありませんが、2つの異なる方法で使用できるようにグローバルレベルで宣言する必要があります – Steve