Поэтому я не знаю, как задать этот вопрос, и это может быть одной из причин, по которой у меня возникают проблемы с поиском ответов в любом месте.
Итак, моя установка заключается в том, что у меня есть класс
public class Connection
{
public static event EventHandler LogggedIn;
public static TDConnection TDC {get;set;}
public string Authenticate(){...}
public static void Login()
{
if (Connection.TDC.Connected)
{
_bw = new BackgroundWorker
{
WorkerReportsProgress = true,
WorkerSupportsCancellation = true
};
_bw.DoWork += ConnectToProject_DoWork;
_bw.RunWorkerCompleted += ConnectToProject_RunWorkerCompleted;
_bw.RunWorkerAsync(Connection.TDC);
}
}
private static void ConnectToProject_DoWork(object o, DoWorkEventArgs e)
{
Connection.TDC.ConnectProjectEx(Connection.Domain, Connection.Project, Connection.UserName, Utilities.Encryption.AESEncryption.Decrypt(Connection.Password, "fsd*#(dfs(((>>>???fdjs"));
}
private static void ConnectToProject_RunWorkerCompleted(object o, RunWorkerCompletedEventArgs e)
{
LogggedIn(null, new EventArgs());
}
}
В моем основном классе я создаю новое соединение и вызываю Login, который открывает новое соединение с ALM в TDConnection. В моем потоке я хочу использовать это уже открытое соединение внутри моего потока. Из того, что я прочитал, если я сделаю это, мой пользовательский интерфейс заблокируется, потому что я использую методы для члена в потоке пользовательского интерфейса, даже если я нахожусь внутри фонового рабочего.
Одно решение, которое я нашел для этого:
private static void ConnectToProject_DoWork(object o, DoWorkEventArgs e)
{
TDConnection conn = new TDConnection();
conn.InitConnectionEx(QCURL);
conn.Login();
conn.ConnectProject();
e.Result = conn;
}
Я бы предпочел не делать этого, потому что я уже вошел в систему, и для этого требуется дополнительное время.
Я попытался передать Connection.TDC с помощью _bw.RunorkerAsync(Connection.TDC), но это тоже явно не работает.
Есть ли способ использовать уже установленное соединение и не блокировать пользовательский интерфейс во время его подключения?