题
我已经创建了一个网络服务时,我要利用其方法,我的实例,它在这一过程中,呼吁的方法,我最后,我处置它,但是我认为它也可能是好的实例的服务在"私人空Main_Load(目的发送者、定引e)"事件。
事情是,如果我这样做的第一种方式我有化的服务,每次我需要它的一个方法但在其它的方式我必须保持一个网络服务连接所有的时候,我使用这一形式的例子。
我想知道它的这些做法更好,或者如果有一个更好的方式来做到这
战略1
private void btnRead_Click(object sender, EventArgs e)
{
try
{
//Show clock
this.picResult.Image = new Bitmap(pathWait);
Application.DoEvents();
//Connect to webservice
svc = new ForPocketPC.ServiceForPocketPC();
svc.Credentials = new System.Net.NetworkCredential(Settings.UserName, Settings.Password);
svc.AllowAutoRedirect = false;
svc.UserAgent = Settings.UserAgent;
svc.PreAuthenticate = true;
svc.Url = Settings.Url;
svc.Timeout = System.Threading.Timeout.Infinite;
svc.CallMethod();
...
}
catch (Exception ex)
{
ShowError(ex);
}
finally
{
if (svc != null)
svc.Dispose();
}
}
战略2
private myWebservice svc;
private void Main_Load(object sender, EventArgs e)
{
//Connect to webservice
svc = new ForPocketPC.ServiceForPocketPC();
svc.Credentials = new System.Net.NetworkCredential(Settings.UserName, Settings.Password);
svc.AllowAutoRedirect = false;
svc.UserAgent = Settings.UserAgent;
svc.PreAuthenticate = true;
svc.Url = Settings.Url;
svc.Timeout = System.Threading.Timeout.Infinite;
}
private void btnRead_Click(object sender, EventArgs e)
{
try
{
//Show clock
this.picResult.Image = new Bitmap(pathWait);
Application.DoEvents();
svc.CallMethod();
...
}
catch (Exception ex)
{
ShowError(ex);
}
}
private void Main_Closing(object sender, CancelEventArgs e)
{
svc.Dispose();
}
解决方案
这取决于你如何经常都会要求网服务。如果你要叫它几乎不断,它可能会更好使用的方法#2.但是,如果它不会越来越被称为相当通常一样,你是最好使用的方法#1,唯一的实例,它当你需要它。
其他提示
现在我做了一个解决方案对于移动设备转用于不规则的时候,它可用于10分钟,1小时4小时很可变的,它似乎是更好的方法是第一个战略。
去年我们去了一个项目中,我们使用web服务,事实是,我们实例,我们web服务在子新()过程和它的运行得很好,但有时,一些用户权利,在美国,他们醒来的时候,从他们的椅子,当他们返回,并试图继续对应用程序,他们收到一个超时的错误消息和他们不得不重新再次登录。
我们的吼声,也许那是好的,因为可能的用户出去了很长时间了他们的席位,但一旦在一个演示应用地球观测卫星委员会发生完全相同的情况和我个人并不喜欢这种行为,这就是为什么的问题。
谢谢你的回答。
不隶属于 StackOverflow