Visual Studio 2015 Pro komunikat Delay Notification związany z ThreadPool

0

Cześć. po uruchomieniu poniższego kodu dotyczącego ThreadPool w Visual Studio 2015 Pro w Windows 10
otrzymuję komunikat na załączonym obrazku.
może Ktoś już spotkał się z podobnym problemem, proszę o wskazówki jak to wyłączyć lub przywrócić Visual Studio 2015 do normalnego funkcjonowania ponieważ już nie mogę żadnego innego nowego projektu nawet uruchomić - ten komunikat trwale jak mniemam zawiesza funkcjonowanie Visual Studio. Pomocy !

oto poniżej cały kod programu konsolowego w C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//
using System.Threading;
//
namespace JM_3_463
{
    class Program
    {
        static Random r = new Random();
        static int ileWatkow = 10;
        static double pi = 0;
        //
        static void Main(string[] args)
        {
            int czasPoczatkowy = Environment.TickCount;
            //
            //uruchamianieObliczenPi();
            //
            /*
            ThreadStart ts = new ThreadStart(uruchamianieObliczenPi);
            Thread t = new Thread(ts);
            //t.IsBackground = true;
            t.Priority = ThreadPriority.Highest;
            t.Start();
            //Thread.Sleep(100);
            //t.Abort();
            Console.WriteLine("Czy ten napis pojawi się przed otrzymaniem wyniku?");
            t.Suspend();
            Console.WriteLine("Naciśnij Enter aby kontynować działanie wątku...");
            Console.ReadLine();
            t.Resume();
            */
            //
            /*
            //tworzenie watkow
            //ThreadStart ts = new ThreadStart(uruchamianieObliczenPi);
            ParameterizedThreadStart ts = new ParameterizedThreadStart(uruchamianieObliczenPi);
            Thread[] tt = new Thread[ileWatkow];
            for (int i = 0; i < ileWatkow; ++i)
            {
                tt[i] = new Thread(ts);
                tt[i].Priority = ThreadPriority.Lowest;
                tt[i].Start(i);                
            }

            //czekanie na zakonczenie watkow
            foreach (Thread t in tt)
            {
                t.Join();
                Console.WriteLine("Zakończył działanie watek nr {0}", t.ManagedThreadId);
            }
            pi /= ileWatkow;
            Console.WriteLine("Wszystkie wątki zakończyły działanie.\nUśrednione Pi={0}, błąd={1}", pi, Math.Abs(Math.PI - pi));
            */
            //
            //tworzenie ( puli ! )  watkow
            ThreadPool.SetMaxThreads(30, 100);// JM-3-463
            //
            WaitCallback metodaWatku = new WaitCallback(uruchamianieObliczenPi);
            //
            for (int i = 0; i < ileWatkow; ++i)
            {
                ThreadPool.QueueUserWorkItem(metodaWatku, i);
            }
            //
            //czekanie na zakonczenie watkow
            int ileDostepnychWatkowWPuli = 0; //nieuzywane watki puli
            int ileWszystkichWatkowWPuli = 0; //wszystkie watki puli
            int ileDzialajacychWatkowPuli = 0; //uzywane watki puli
            int tmp = 0;
            do
            {
                ThreadPool.GetAvailableThreads(out ileDostepnychWatkowWPuli, out tmp);
                ThreadPool.GetMaxThreads(out ileWszystkichWatkowWPuli, out tmp);
                //
                ileDzialajacychWatkowPuli = ileWszystkichWatkowWPuli - ileDostepnychWatkowWPuli;
                //
                //Console.Clear();
                Console.WriteLine("Ilość aktywnych wątków puli: {0}", ileDzialajacychWatkowPuli);
                Thread.Sleep(1000);
            }
            while (ileDzialajacychWatkowPuli > 0);
            //
            pi /= ileWatkow;
            //
            Console.WriteLine("Wszystkie wątki zakończyły działanie.\nUśrednione Pi={0}, błąd={1}", pi, Math.Abs(Math.PI - pi));
            //
            int czasKoncowy = Environment.TickCount;
            int roznica = czasKoncowy - czasPoczatkowy;
            Console.WriteLine("Czas obliczeń: " + (roznica).ToString());
            //
            Console.WriteLine("Naciśnij Enter aby kontynować działanie wątku...");
            Console.ReadLine();
        }
        //
        static double obliczPi(long ilośćPrób)
        {
            Random r=new Random(Program.r.Next() & DateTime.Now.Millisecond);
            //
            double x, y;
            long ilośćTrafień = 0;
            for (int i = 0; i < ilośćPrób; ++i)
            {
                if (i == ilośćPrób / 2)
                {
                    /*lock ((object)Program.pi)
                    {
                        Console.WriteLine("Synchronizacja: watek nr {0} osiągnął półmetek", Thread.CurrentThread.ManagedThreadId);
                    }*/
                    /*Monitor.Enter((object)Program.pi);
                    try
                    {
                        Console.WriteLine("Synchronizacja: watek nr {0} osiągnął półmetek", Thread.CurrentThread.ManagedThreadId);
                    }
                    finally
                    {
                        Monitor.Exit((object)Program.pi);
                    }*/
                }
                x = r.NextDouble();
                y = r.NextDouble();
                if (x * x + y * y < 1) ++ilośćTrafień;
                //Console.WriteLine("x={0}, y={1}", x, y);
            }
            return 4.0 * ilośćTrafień / ilośćPrób;
        }
        //
        static void uruchamianieObliczenPi(object parametr)
        {
            try
            {
                int? indeks = parametr as int?;
                //
                long ilośćPrób = 10000000L / ileWatkow;
                //long ilośćPrób = 1000000000L / ileWatkow;
                Console.WriteLine("Uruchamianie obliczeń, watek nr {0}, indeks {1}...",
                    Thread.CurrentThread.ManagedThreadId, indeks!=null?indeks.ToString():"---");
                //
                double pi = obliczPi(ilośćPrób: ilośćPrób);
                Program.pi += pi;
                //
                Console.WriteLine("Pi={0}, błąd={1}, wątek nr {2}, indeks {3}", pi, Math.Abs(Math.PI - pi),
                    Thread.CurrentThread.ManagedThreadId, indeks != null ? indeks.ToString() : "---");
            }
            catch (ThreadAbortException exc)
            {
                Console.WriteLine("Działanie wątku zostało przerwane (" + exc.Message + ")");
            }
            catch (Exception exc)
            {
                Console.WriteLine("Wyjątek (" + exc.Message + ")");
            }
        }
    }
}
0

Azarien. masz rację, przepraszam. Nieco oczyszczony kod ponownie zamieszczam poniżej

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//
using System.Threading;
//
namespace JM_3_463
{
    class Program
    {
        static Random r = new Random();
        static int ileWatkow = 10;
        static double pi = 0;
        //
        static void Main(string[] args)
        {
            int czasPoczatkowy = Environment.TickCount;
            //tworzenie ( puli ! )  watkow
            ThreadPool.SetMaxThreads(30, 100);// JM-3-463
            //
            WaitCallback metodaWatku = new WaitCallback(uruchamianieObliczenPi);
            //
            for (int i = 0; i < ileWatkow; ++i)
            {
                ThreadPool.QueueUserWorkItem(metodaWatku, i);
            }
            //
            //czekanie na zakonczenie watkow
            int ileDostepnychWatkowWPuli = 0; //nieuzywane watki puli
            int ileWszystkichWatkowWPuli = 0; //wszystkie watki puli
            int ileDzialajacychWatkowPuli = 0; //uzywane watki puli
            int tmp = 0;
            do
            {
                ThreadPool.GetAvailableThreads(out ileDostepnychWatkowWPuli, out tmp);
                ThreadPool.GetMaxThreads(out ileWszystkichWatkowWPuli, out tmp);
                //
                ileDzialajacychWatkowPuli = ileWszystkichWatkowWPuli - ileDostepnychWatkowWPuli;
                //
                //Console.Clear();
                Console.WriteLine("Ilość aktywnych wątków puli: {0}", ileDzialajacychWatkowPuli);
                Thread.Sleep(1000);
            }
            while (ileDzialajacychWatkowPuli > 0);
            //
            pi /= ileWatkow;
            //
            Console.WriteLine("Wszystkie wątki zakończyły działanie.\nUśrednione Pi={0}, błąd={1}", pi, Math.Abs(Math.PI - pi));
            //
            int czasKoncowy = Environment.TickCount;
            int roznica = czasKoncowy - czasPoczatkowy;
            Console.WriteLine("Czas obliczeń: " + (roznica).ToString());
            //
            Console.WriteLine("Naciśnij Enter aby kontynować działanie wątku...");
            Console.ReadLine();
        }
        //
        static double obliczPi(long ilośćPrób)
        {
            Random r=new Random(Program.r.Next() & DateTime.Now.Millisecond);
            //
            double x, y;
            long ilośćTrafień = 0;
            for (int i = 0; i < ilośćPrób; ++i)
            {
                if (i == ilośćPrób / 2)
                {
                    /*lock ((object)Program.pi)
                    {
                        Console.WriteLine("Synchronizacja: watek nr {0} osiągnął półmetek", Thread.CurrentThread.ManagedThreadId);
                    }*/
                    /*Monitor.Enter((object)Program.pi);
                    try
                    {
                        Console.WriteLine("Synchronizacja: watek nr {0} osiągnął półmetek", Thread.CurrentThread.ManagedThreadId);
                    }
                    finally
                    {
                        Monitor.Exit((object)Program.pi);
                    }*/
                }
                x = r.NextDouble();
                y = r.NextDouble();
                if (x * x + y * y < 1) ++ilośćTrafień;
                //Console.WriteLine("x={0}, y={1}", x, y);
            }
            return 4.0 * ilośćTrafień / ilośćPrób;
        }
        //
        static void uruchamianieObliczenPi(object parametr)
        {
            try
            {
                int? indeks = parametr as int?;
                //
                long ilośćPrób = 10000000L / ileWatkow;
                //long ilośćPrób = 1000000000L / ileWatkow;
                Console.WriteLine("Uruchamianie obliczeń, watek nr {0}, indeks {1}...",
                    Thread.CurrentThread.ManagedThreadId, indeks!=null?indeks.ToString():"---");
                //
                double pi = obliczPi(ilośćPrób: ilośćPrób);
                Program.pi += pi;
                //
                Console.WriteLine("Pi={0}, błąd={1}, wątek nr {2}, indeks {3}", pi, Math.Abs(Math.PI - pi),
                    Thread.CurrentThread.ManagedThreadId, indeks != null ? indeks.ToString() : "---");
            }
            catch (ThreadAbortException exc)
            {
                Console.WriteLine("Działanie wątku zostało przerwane (" + exc.Message + ")");
            }
            catch (Exception exc)
            {
                Console.WriteLine("Wyjątek (" + exc.Message + ")");
            }
        }
    }
}
0

chciałem jedynie podpowiedzieć, iż to jest w Windows 10 natomiast ten sam VS-2015 Pro w Windows 8.1 wykonuje kod poprawnie jak na załączonym obrazku... prawdopodobnie rzeczywiście należałoby zgłosić ten problem do Microsoftu tyle, iż ja niezbyt wiem jak to zrobić - ja jeszcze Im nie wysyłałem opisu żadnego problemu.

0

wydaje mi się, iż powinienem w tym momencie zrezygnować z Windows 10 i powrócić do Windows 8.1... pozdrawiam Danon

0

to chyba jest głupie, abym ja miał wysyłać jakby sam Visual Studio nie potrafił tego zrobić ? ale te przyciski właściwie to one w ogóle są nieaktywne w tym oknie komunikatu...

0

eeeeeeeeeee. chyba się samo naprawiło... to może jednak jakąś poprawkę pobrał z Internetu... on-line znaczy się bo problem jakoby się sam może tylko chwilowo jednakże rozwiązał...sam przysięgam. Pozdrowienia Danon

0

wydaje się, iż coś jest być może z wersją VS-2015-Pro trial iż nie chce za bardzo poprawnie w Windows 10... ponieważ mam VS-2013-4 Express Desktop, która śmiga pięknie w Windows 10... bez jakichkolwiek problemów.

Ogólnie czekamy przecież na wersję Windows 10 jakąś wreszcie bardziej może solidną... Tak więc chwilowo zajmuje mi trochę czasu sprawdzenie czym można już dalej kontynuować naukę C#. Chciałem z Windows 10 pobrać sobie wersję VS-2015 Community w połowie pobierania Windows 10 zerwał pobieranie... było już bardzo rano koło ósmej i właśnie przebudziłem się i zastanawiam co jeszcze może zrobić... prawdopodobnie będę przyglądał się nadal wersji VS-2015-Pro ponieważ obejrzałem zachęcające opisy jakie to nowe funkcjonalności mi oferuje... i jestem pod wrażeniem dlatego piszę iż w tej sytuacji nie jest mi lekko powrócić do starszej wersji VS-2013-4... to tak na marginesie problemu z jakim wczoraj założyłem ten wątek. pozdrawiam Danon

0
Czarny Młot napisał(a):

Ogólnie czekamy przecież na wersję Windows 10 jakąś wreszcie bardziej może solidną... (...) Chciałem z Windows 10 pobrać sobie wersję VS-2015 Community w połowie pobierania Windows 10 zerwał pobieranie...

Visual Studio 2015 działa normalnie na Windows 10, więc nie wiem na co mamy czekać.
Pobieraj darmowe Community.

0

ja jeszcze wczoraj tj. dopóki mi się ten komunikat nie pokazał też byłem zasadniczo usatysfakcjonowany. Tyle, iż właściwie dobę jedynie z przerwą na sen obserwuję czy problem opisany na wstępie ponownie ujawni się, ponieważ już po jego zniknięciu za jakąś godzinę gdzieś koło północy ponownie mi się pojawił i już byłem zdecydowany prawie że by odinstalować... zainstalowałem VS-2013-4 Expres Desktop i sprawdzam obecnie na okoliczność wczorajszego błędu... jakiś czas mi to jednak zajęło i jeszcze chyba na dobre nie ochłonąłem ! Może chwilowo rzeczywiście traktować z przymrużeniem oka do pierwszej większej poprawki Windows 10 ponieważ jak sadzę to on może być powodem. problem jest w Windows 10 a ja potrzebuję w tej chwili bardziej stabilnego systemu niż Windows 8.1 i głównie z tego powodu przeszedłem na te dwa w jednym czasie narzędzia Microsoftu. dopowiem, iż testuję obecnie silnik usługi sieciowej złożony z wielu niezależnych programów bardzo obciążających łącze i to nie chodzi o jakieś zaawansowane finezyjne oprogramowanie a wprost przeciwnie proste brutalne celowo na granicy wytrzymałości celem jest badanie kiedy to się rozleci...

0

Cześć. potrzebuję Visual Studio 2015 Community bym chciał pobrać... ale tylko w postaci pliku iso.

Czy może mi Ktoś pomóc bo jest jakaś nowa strona co niczego Visual Studio 2015 w wersji iso pobrać w ogóle nie można.
dzięki

0

AreQrm... bardzo dziękuję za pomoc Kangoo

1 użytkowników online, w tym zalogowanych: 0, gości: 1