【发布时间】:2016-01-18 11:42:09
【问题描述】:
您好,我的 C# Web 服务中有以下方法:
[WebMethod(EnableSession = true)]
//[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
public object[] GetChartData()
{
System.Threading.Thread.Sleep(5000);
string graphData = "";
List<GoogleChartData> data = new List<GoogleChartData>();
using (DBContext context = new DBContext ())
{
data = context.Campaings.AsNoTracking().Take(10).Select(c => new GoogleChartData
{
Year = 2015,
USA = 1,
Mexico = 2,
Canada = 3
}).ToList();
}
var chartData = new object[data.Count + 1];
chartData[0] = new object[]{
"Year",
"USA",
"Mexico",
"Canada"
};
Random random = new Random();
int j = 0;
foreach (var i in data)
{
j++;
chartData[j] = new object[] { i.Year.ToString(), random.Next(0, 1000), random.Next(0, 1000), random.Next(0, 1000) };
}
return chartData;
}
我在多次从同一个应用程序调用时遇到问题,所以我想让它异步。我是 Async / Await 的新手。
有什么线索吗?
【问题讨论】:
-
我在弄清楚你有什么问题时遇到了问题......你可能想先为你正在使用的框架寻找一些 async/await 示例(看起来像 WebForms)。
-
鉴于 Web 开发的性质,
async/await不太可能在这里为您提供帮助。也许您应该更具体地了解您遇到的问题? -
为什么你的程序里面有 5 秒的睡眠时间?当您多次调用该方法时,您究竟遇到了什么“问题”。编辑:你的代码有很多没有意义的东西,你做了
.Select(c =>,但你从来没有在选择中使用c,你为什么要进行数据库调用? -
@VAAA Web 服务请求由单独的后台线程处理,您不需要需要使用
async/await来使它们异步。问题是什么,显示问题的代码在哪里?您如何调用服务? .
标签: c# async-await task-parallel-library