GUI和服务器应用程序

时间:2018-10-22 21:15:52

标签: c# wpf

我对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

1 个答案:

答案 0 :(得分:1)

放置服务器逻辑的位置将取决于您希望UI表现如何。

通常,您希望窗口与加载/检索数据一起单独加载。

您可以将服务器调用置于Loaded事件中。例如:

public void OnLoad(object sender, RoutedEventArgs e)
{
   server = new Server();
   server.start();

  ...
}

在加载窗口后将调用它,并且可以启动它。如何更新数据绑定将取决于服务器对象的构建方式。