0

プログラム用の IP スキャナーの構築に取り組んでいます。現在動作していますが、実行速度が非常に遅いです。タイムアウトが正しく機能していないようです。コードは次のようになります。

    public Tracker Discover(Uri hostUri, string organizationTrackerId)
    {
        var binding = new NetTcpBinding();
        binding.ReceiveTimeout = TimeSpan.FromSeconds(2);
        binding.SendTimeout = TimeSpan.FromSeconds(2);
        binding.OpenTimeout = TimeSpan.FromSeconds(2);
        var endpointAddress = new EndpointAddress(hostUri);
        using (var factory = new ChannelFactory<ITrackerService>(binding, endpointAddress))
        {
            try
            {
                factory.Open(TimeSpan.FromSeconds(2));
                var channel = factory.CreateChannel();
                Tracker tracker = channel.Discover(organizationTrackerId);
                factory.Close();
                return tracker;
            }
            catch (Exception)
            {
                factory.Abort();
            }
        }
        return null;
    }

このコードは、255 個の IP をループする for ループから呼び出されます。この関数が呼び出されると、タイムアウトを 2 に設定しようとしても、現在終了するのに約 16 秒かかります。何かアイデアはありますか?

4

0 に答える 0