小编Acq*_*ire的帖子

嵌套调用中的异步和等待.没有等待等待导致IIS崩溃的方法

我一直在网上看,我有一些问题,希望有人在这里可以回答我.我正在尝试解决导致IIS崩溃的问题.该服务呼叫应该是一种火灾和忘记呼叫类型.如果失败,我们禁止并记录异常.因为它是一个长期运行的服务调用,所以它被实现为异步.当前实现有几个嵌套方法调用如下:

// in first service
public void PerformService(some params)
{
    // setup and validation

    DoAction();
}
private void DoAction()
{
    // final setup

    OtherService.FireAndForgetAsync(some params);
}

// in the other service (OtherService)
public async Task FireAndForgetAsync()
{
    await Task.Run(() => 
    {
        try 
        {
           // do some long running stuff
        }
        catch (Exception e)
        {
            ErrorLogger.LogError(e)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上,我们在一个循环(从0到多次迭代)中调用PerformService并且当前得到以下异常:

System.NullReferenceException: Object reference not set to an instance of an object. at   
System.Web.ThreadContext.AssociateWithCurrentThread(Boolean setImpersonati onContext) at 
System.Web.HttpApplication.OnThreadEnterPrivate(Boolean setImpersonationCo ntext) at
System.Web.LegacyAspNetSynchronizationContext.CallCallbackPossiblyUnderLock(SendOrPostCallback …
Run Code Online (Sandbox Code Playgroud)

c# async-await c#-5.0

3
推荐指数
2
解决办法
3133
查看次数

vbscript字典在循环中添加产生现有密钥错误

我只是想构建一个productIDs的字典

dim viewableProductIDs : set viewableProductIDs = CreateObject("Scripting.Dictionary")
    do while not rsEntry.EOF
        viewableProductIDs.Add rsEntry("ProductID"), true
        rsEntry.MoveNext
    loop
Run Code Online (Sandbox Code Playgroud)

rsEntry是一个ADODB Recordset,我通过详尽的debbug打印确保我的查询确实返回了唯一的productID,并且记录集没有重复项.然而有些人,vbscript坚持认为有重复.它会添加第一个罚款,但之后它会在所有其他方面出错.我试着用现有钥匙检查它周围,但是有些人认为它们都是,但第一个存在.然后最后我留下了一个只有一个条目的字典.

有没有人知道它为什么这样做?

vbscript dictionary recordset

1
推荐指数
1
解决办法
1551
查看次数

标签 统计

async-await ×1

c# ×1

c#-5.0 ×1

dictionary ×1

recordset ×1

vbscript ×1