neo4j中的线程导致此异常:“服务器关闭了一个预期保持活动状态的连接。”

时间:2019-05-06 12:18:20

标签: c# neo4j

在c#的多线程中使用neo4j时出现错误。我的应用程序应连接许多不同的节点以获得多个图形。图中的每个节点与该图中的所有其他节点具有相同的编号。为了获得快速结果,我想建立一个多线程应用程序,并在每个线程中放入整个图的计算。 在30秒内同时计算40个图形之后,我从neo4j客户端收到此错误:

System.Net.Http.HttpRequestException:'发送请求时发生错误。 内部异常 WebException:基础连接已关闭:服务器已关闭了预期保持活动状态的连接。

对于同时较少数量的图形,该应用程序可以工作。

我在Windows 10虚拟机上使用neo4j-ce 3.2.1(社区版)。我已经尝试配置neo4j.conf,在其中设置dbms.transaction.timeout = 250s并重新启动GUI。

这是异常产生的代码:

var clListeNodes = clKnoten.Results.ToList().First().ListNodes;

这是我要执行的代码:

private void calling_method()
{
            foreach (string cPatient in listPatienten)
            {
                Thread thread = new Thread(delegate() { verbindungen_einlesen(cPatient); });
                thread.SetApartmentState(ApartmentState.MTA);
                thread.Start();
            }

}


private void verbindungen_einlesen(string cPatient)
{
            //var client = new GraphClient(new Uri("http://localhost:7474/db/data"), "neo4j", "Promotion2017");
            var client = new GraphClient(new Uri("http://localhost:7474/db/data"), new HttpClientWrapper("neo4j", "Promotion2017", new System.Net.Http.HttpClient() { Timeout = TimeSpan.FromMinutes(2000) }));
            client.ConnectAsync();

        ...

        var clKnoten = client.Cypher
                        .Match("(event1)") //.Match("(event1:" + listNodearten[nIndex].cEventName.Trim().Replace(" ", "_").Replace("<", "krAUF").Replace(">", "krZU").Replace("[", "_").Replace("]", "_").Replace("#", "RAUTE").Replace(":", "DP") + ")")
                        .With("event1")
                        .Where((Neo4JNodeClass event1) => event1.Patientnumber == nPatientennr && event1.EventItemId == EventItem)
                        .Return((event1) => new { ListNodes = event1.CollectAs<Event>() });

                    var clListeNodes = clKnoten.Results.ToList().First().ListNodes;
                    //MessageBox.Show("COUNT: "+clListeNodes.Count().ToString());

                    var listListeNodes = clListeNodes.OrderBy(c => c.Min_from_first_charttime).ToList();
}

0 个答案:

没有答案