我有一个托管服务的WPF应用程序,其背后的代码是:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
_host = new ServiceHost(typeof(GestorAplicacionesService));
_host.Open();
}
private ServiceHost _host;
}
我了解到关闭服务是一种很好的做法,但是在这种情况下我不知道该怎么做?因为我有主窗口,所以如果我关闭应用程序,则可以在关闭事件中关闭服务。但是,如果有某些异常可能导致无法触发关闭事件的应用程序中断,则该服务将无法关闭。
因此,我想知道将其托管在wpf应用程序中时关闭服务的最佳方法是什么。
谢谢。
答案 0 :(得分:1)
处理Closing
事件并将其关闭。您可能还需要实现IDisposable
接口,以应对一次性字段的最佳做法:
public sealed partial class MainWindow : Window, IDisposable
{
private readonly ServiceHost _host = new ServiceHost(typeof(GestorAplicacionesService));
public MainWindow()
{
InitializeComponent();
_host.Open();
Closing += MainWindow_Closing;
}
private void MainWindow_Closing(object sender, CancelEventArgs e)
{
Dispose();
}
public void Dispose()
{
_host.Close();
_host.Dispose();
}
}
这是您可以做的最好的事情。如果整个过程意外关闭,则WPF应用程序中无能为力。内存仍将返回到操作系统。
答案 1 :(得分:0)
您可以在app.xaml中检查所有内容
multipart/form-data
,对于线程问题,请点击以下链接:https://soumya.wordpress.com/2010/05/26/wcf-simplified-part-7-hosting-a-wcf-service-using-wpf/