我很难完成我的任务,要坚持下去,无限期地逃避周转基金的服务。 我这样做可能是错误的,我愿意接受建议。
我的任务就是开始处理任何被丢入阻塞采集库的请求。 据我所知, GetCumpusingEnual () 方法应该允许我在数据到达时持续地拉动数据。 它本身没有问题。 我用一个窗口表格填写请求并提交, 处理了几十项请求, 没有任何错误或缺陷。 一旦我有信心, 我便通过一个 asmx 网络服务将它连接到我的网站上, 并使用 jQuery ajax 电话提交请求 。
网站根据提交的一个URL提交请求,网站服务处从 URL 下载 html 内容内容,并查找内容中的其他 URL 。 然后,网站开始为其找到的每个URL 创建请求, 并将其提交屏蔽集合。 在 WCF 服务中, 如果应用程序是在线的( 任务已经开始), 它会通过平行的 GetCumpingEnumber 提取请求。 ForEach and processes the request.
这对最初的少数提交文件有效, 但任务却突然停止了。 当然, 这比我在测试中模拟的要求要多10x多, 但我期望它只会加速。 我认为问题在于我开始任务的方法:
public void Start()
{
Online = true;
Task.Factory.StartNew(() =>
{
tokenSource = new CancellationTokenSource();
CancellationToken token = tokenSource.Token;
ParallelOptions options = new ParallelOptions();
options.MaxDegreeOfParallelism = 20;
options.CancellationToken = token;
try
{
Parallel.ForEach(FixedWidthQueue.GetConsumingEnumerable(token), options, (request) =>
{
Process(request);
options.CancellationToken.ThrowIfCancellationRequested();
});
}
catch (OperationCanceledException e)
{
Console.WriteLine(e.Message);
return;
}
}, TaskCreationOptions.LongRunning);
}
我曾经考虑过要把它 转到一个WF4服务系统, 并把它连接到一个工作流中, 并使用工作流持久性, 但是除非有必要, 我不愿意学习 WF4 。 请告诉我是否需要更多信息 。