-2
我正在尋找一種方法來從後臺線程關閉窗體。 場景: 它在後臺線程聊天應用程序來管理TCP客戶端 現在我想從這個線程C#關閉從後臺線程的WPF窗體線程
App.xaml.cs
public List<Window> dialogs = new List<Window>();
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Login loginDialog = new Login();
GUI.MainWindow mainDialog = new GUI.MainWindow();
dialogs.Add(loginDialog);
dialogs.Add(mainDialog);
client = new Klassen.TClient(dialogs);
if (loginDialog.ShowDialog() != true)
return;
}
的TClient類關閉第一種形式
public class TClient
{
public TSocket socket;
public TClient(List<Window> dialogs)
{
socket = new TSocket(dialogs);
}
}
的TSocket類,與後臺線程
public class TSocket
{
/* Variables */
List<Window> dialogs;
public TSocket(List<Window> dialogs)
{
this.dialogs = dialogs;
clientThread = new Thread(connectionWorker);
clientThread.Start();
}
public bool connect()
{
/* Connect */
}
void connectionWorker()
{
connect();
while (isConnected)
{
/* if statment */
Login loginDialog = (Login)dialogs[0];
//dialogs[1].Close();
}
}
}
我已經嘗試過了delagate工作和調用,但它並沒有正常工作
你有沒有考慮過你的抽象類TSocket讓我不UI直接工作?就像直接調用Window類一樣,它暴露了你在UI中處理的事件(如連接/斷開連接)? – kape123
事件的樣子應該如何? – JFL