我对WPF和服务器应用程序有疑问。我被赋予编写带有GUI的简单TCP服务器的任务。我是C#(和一般的GUI)的新手,因此我有一个问题。
我有2个课程:
App.xaml.cs
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
MainWindow window = new MainWindow();
if (e.Args.Length != 1)
{
MessageBox.Show("Wrong number of arguments!", "An error has occured", MessageBoxButton.OK, MessageBoxImage.Error);
Environment.Exit(1);
}
window.Show();
}
}
MainWindow.xaml.cs
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ShowConnectionsButton_Click(object sender, RoutedEventArgs e)
{
LogsTextBox.Text += "text\n";
}
}
都是最初由Visual Studio生成的。我假设MainWindow.xaml用于处理与GUI相关的内容,而App.xaml用于处理应用程序的逻辑。因此,我的(简单)问题是,如何启动服务器部分?应该是
server = new Server();
server.start();
window.Show();
或者也许
window.Show();
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
server = new Server();
server.start();
}).Start();
还是可以使用BackgroundWorker
?
答案 0 :(得分:1)
放置服务器逻辑的位置将取决于您希望UI表现如何。
通常,您希望窗口与加载/检索数据一起单独加载。
您可以将服务器调用置于Loaded事件中。例如:
public void OnLoad(object sender, RoutedEventArgs e)
{
server = new Server();
server.start();
...
}
在加载窗口后将调用它,并且可以启动它。如何更新数据绑定将取决于服务器对象的构建方式。