Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GUI和服务器应用程序_C#_Wpf - Fatal编程技术网

C# GUI和服务器应用程序

C# GUI和服务器应用程序,c#,wpf,C#,Wpf,我有一个关于WPF和服务器应用程序的问题。我的任务是编写一个带有GUI的简单TCP服务器。一般来说,我不熟悉C和GUI,因此我有一个问题 我有两门课: App.xaml.cs MainWindow.xaml.cs 它们最初都是由VisualStudio生成的。我假设MainWindow.xaml用于处理GUI相关的内容,App.xaml用于应用程序的逻辑。所以,我的简单问题是,我应该如何启动服务器部件?应该是吗 server = new Server(); server.start(); win

我有一个关于WPF和服务器应用程序的问题。我的任务是编写一个带有GUI的简单TCP服务器。一般来说,我不熟悉C和GUI,因此我有一个问题

我有两门课:

App.xaml.cs

MainWindow.xaml.cs

它们最初都是由VisualStudio生成的。我假设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?

将服务器逻辑放在何处取决于您希望UI的行为方式

通常,您希望窗口与加载/检索数据分开加载

您可以将服务器调用放入事件中。例如:

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

  ...
}

当窗口已加载并可以启动时,将调用此函数。更新数据绑定的方式将取决于服务器对象的构建方式。

您不应该使用新线程来spool工作,应该使用异步等待模式。您应该创建一个正在执行的任务,而不是一个原始线程。当对线程的引用被GC’d,并且服务器突然无故停止时,第二个任务可能会让您感到心痛。我应该在MainWindow.xaml.cs文件中提到这一点。
window.Show();
new Thread(() =>
{
    Thread.CurrentThread.IsBackground = true;
    server = new Server();
    server.start();
}).Start();
public void OnLoad(object sender, RoutedEventArgs e)
{
   server = new Server();
   server.start();

  ...
}