【发布时间】:2012-03-30 15:23:26
【问题描述】:
我使用单例模式创建了一个 Web 服务的单个实例,我在我的 win 表单应用程序中使用了该实例。我已经看到这是 Web 应用程序的好习惯。我想知道这对于winform应用程序是否也一样?另外,我是否应该担心处理 Web 服务(即之后的代理对象) - 它有一个 .Dispose 方法,但我没有在我的代码中的任何地方调用它。在我的应用程序中,我正在异步调用我所有的 Web 方法。这可能听起来很傻,但我不知道我需要在哪里调用 dispose。任何人都可以帮忙吗?
class ListService
{
private static RetrieveList s_proxy;
private static readonly object s_lock = new object();
private static readonly string s_webServiceURL = Authentication.RetrieveListUrl;
internal static RetrieveList Proxy
{
get
{
lock (s_lock)
{
if (s_proxy == null)
{
s_proxy = new RetrieveList();
s_proxy.Url = s_webServiceURL;
}
return s_proxy;
}
}
}
}
【问题讨论】:
-
在哪里你见过它声称在 WinForms 应用程序中使用单例是个好主意?
-
处理代理比您提供的代码要复杂一些...如果您要将代理对象保留在内存中,则必须添加代码以重新创建它如果通道有故障,确保它没有被关闭,等等。
-
在下面的帖子中提到这是一个好主意。但是,它似乎是在 web 而不是 winforms 的上下文中。 stackoverflow.com/questions/429478/…
-
@JonSkeet:他不就是在问这个吗?他说“我想知道这是否也适用于 winform 应用程序”。他不知道网络应用的主张是否也适用于 WinForms。
-
@Abel: 嗯...要么我之前看错了,要么他当时编辑了它。考虑将我的问题编辑为“您在哪里看到它声称在 Web 应用程序中使用单例是一种很好的做法?” (尽管 OP 现在已经回答了这个问题。)
标签: c# .net winforms web-services