Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EventSourceException:操作系统没有可用的缓冲区_C#_Exception_Roslyn_Tpl Dataflow_Microsoft.build - Fatal编程技术网

C# EventSourceException:操作系统没有可用的缓冲区

C# EventSourceException:操作系统没有可用的缓冲区,c#,exception,roslyn,tpl-dataflow,microsoft.build,C#,Exception,Roslyn,Tpl Dataflow,Microsoft.build,全文如下: EventSourceException:操作系统没有可用的缓冲区 系统(例如,事件速率过快) 由于递归,我调用这个方法大约一百万次。它没有停止,我只是在VS2013的输出调试窗口中得到异常文本。但是它非常慢 private static IEnumerable<string> RecursiveFindServices(ISymbol sym, Solution sln) { List<string> list = new List<strin

全文如下:

EventSourceException:操作系统没有可用的缓冲区 系统(例如,事件速率过快)

由于递归,我调用这个方法大约一百万次。它没有停止,我只是在VS2013的输出调试窗口中得到异常文本。但是它非常慢

private static IEnumerable<string> RecursiveFindServices(ISymbol sym, Solution sln)
{
    List<string> list = new List<string>();
    var callers = SymbolFinder.FindCallersAsync(sym, sln).Result;  // this line may cause the EventSourceException  (try not to call Async)
    foreach(var caller in callers)
    {
        string name = GetMethodName(caller);
        if (caller.CallingSymbol.ContainingType.Name.EndsWith("Test"))
            continue;

        if (recursiveList.Contains(name))
            continue;

        recursiveList.Add(name);

        if (IsWebservice(caller))
            list.Add(name);
        else
            list.AddRange(RecursiveFindServices(caller.CallingSymbol, sln));
    }

    return list;
}
任何ide如何加快代码速度或找到异常的根本原因都是有帮助的。
//谢谢:-)

我们也面临这个例外!不确定是否相关,我的C:驱动器当时已满,在释放一些空间后,没有出现此异常。

我遇到了此问题,同时我正在使用VS 2013开发渲染方法。我找到了一个解决方案,可以停止向控制台窗口发送垃圾邮件,并显示以下消息:

转到VS 2013选项菜单:

在德语中,这是:

EXTRAS-->Optionen…-->调试-->Allgemein-->(标记)verwaltten Kmpatibilitäsmodus verwenden

用英语来说,这是:

工具-->选项-->调试-->常规-->(标记)使用托管兼容模式


这将停止该消息。

您说过您多次调用它。你多久叫它一次,每秒100万次,或者尽可能快100万次,然后完成。。。ETC异常是EventSourceException-您的代码正在以过高的速率向源发送跟踪事件。这种异常发生在哪里?它的调用堆栈是什么?在哪里记录事件?顺便问一下,为什么要通过调用
.Result
而不是使用
async/await
进行阻止?你这样简直是在浪费CPU周期。@Mike159,我尽可能快地称之为100万次。:-)@帕纳吉奥提斯卡纳沃斯:谢谢!我已经开始使用等待。。。我还尝试在VS2013中对所有CLR异常启用中断,但它只是使整个VS2013崩溃-(顺便问一下,如果您知道如何重现此问题,是否可以将其添加到?VS 2017会提示您,如果启用此功能,则“编辑并继续”将被禁用。在我的手机上为我工作,SD卡上几乎没有空间,只有50-100 MB。
Microsoft.Build.Conversion.Core.dll     (File Version 14.0)
Microsoft.Build.dll                     (File Version 14.0)
Microsoft.Build.Engine.dll              (File Version 14.0)
Microsoft.Build.Framework.dll           (File Version 14.0)
Microsoft.Build.Tasks.Core.dll          (File Version 14.0)
Microsoft.Build.Utilities.Core.dll      (File Version 14.0)
System.Threading.Tasks.Dataflow.dll     (File Version 4.5.24)