WCF控制台应用程序的性能问题

本文关键字:性能 问题 应用程序 控制台 WCF | 更新日期: 2023-09-27 18:12:16

有一个托管在。net控制台应用程序中的WCF服务。客户端创建到具有回调的服务的双工通道。它以这种方式调用服务:

var task = Task<object>.Factory.FromAsync(clientRay.Proxy.BeginCalc, clientRay.Proxy.EndCalc, lst_RaySrvcDetails, state);

下面是服务控制台应用程序的Main方法:

static void Main(string[] args)
{
     ServiceHost srvcHost = new ServiceHost(serviceInstance, uriBase);
     //
     //Here the service is hosted
     //
     while(true)
     {
        ;
     }
}  

和MyService.cs在下面的方法中接收调用:

public IAsyncResult BeginCalc(List<MBSWaldram.DataAccessLayer.Framework.ServiceDetails> input,
                    AsyncCallback callback, object state)
{
   calcInput = input;
   // Create a task to do the work
   var task = Task<object>.Factory.StartNew(this.CalcTasks, state);
   return task.ContinueWith(res => callback(task));
}

现在的CalcTasks方法,其中实际的任务运行,是显示较低的性能相比,有一个WCF Windows窗体应用程序。我能想到的一个原因是我使用while(true){;}无限循环的方式,这样应用程序就不会终止并等待来自客户端的调用。我不确定这是最好的做法。由于某些原因,我不能使用Windows窗体应用程序。

如果有人能说明为什么这里有性能问题,我将不胜感激。谢谢。

WCF控制台应用程序的性能问题

while (true) {;}确实是不幸的构造。在控制台应用程序中使用Console.ReadLine()代替。应用程序将等待,直到按回车键