User Tag List

Էջ 2 5-ից ԱռաջինԱռաջին 12345 ՎերջինըՎերջինը
Ցույց են տրվում 16 համարից մինչև 30 համարի արդյունքները՝ ընդհանուր 68 հատից

Թեմա: հարցեր C#-ի վերաբերյալ

  1. #16
    Անդամության թեկնածու onlooker-ի ավատար
    Գրանցման ամսաթիվ
    18.03.2008
    Գրառումներ
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Մեջբերում Pchuk-ի խոսքերից Նայել գրառումը
    թարսի պես պետք է, որովհետև կա 2 ծրագիր, որից մեկը կոնսոլ է, իսկ մյուսը սովորական GUI-ով ծրագիր, որը աշխատացնում է կոնսոլը, ու աշխատանքի ընթացքում կոնսոլի եկրանը չի երևում, որովհետև հիմնական ծրագիրն է ղեկավարում կոնսոլի մուտքն ու ելքը: Հիմա ես ոնց ասեմ այդ կոնսոլ ծրագրին, որ գիտես ինչ վերջում մի հատ անկապ բան գրի որ տռեդս փակվի:
    փորփրեցի ու չկարողացա...
    the sun also rises...

  2. #17
    Մշտական անդամ AMD-ի ավատար
    Գրանցման ամսաթիվ
    30.03.2006
    Գրառումներ
    266
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    կոդտ տուր նայեմ կարողա մի բան դուրս գա

  3. #18
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    HTML կոդ:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    
    namespace AGamer.Gamer
    {
        public sealed class GenericGamer<TConnector,TGamer>
            where TConnector : IConnector
            where TGamer : Gamer
        {
            private TConnector connector_;
            private TGamer gamer_;
    
            private bool exit_;
            private AutoResetEvent waitForOutput = new AutoResetEvent(false);
            private AutoResetEvent waitForInput  = new AutoResetEvent(false);
    
            public GenericGamer(TConnector connector, TGamer gamer)
            {
                connector_ = connector;
                gamer_ = gamer;
            }
            
            public void Run()
            {
                Thread inputThread = new Thread(new ThreadStart(InputThreadFunction));
                Thread outputThread = new Thread(new ThreadStart(OutputThreadFunction));
                Thread gamerThread = new Thread(new ThreadStart(GamerThreadFunction));
    
                inputThread.Start();
                outputThread.Start();
                gamerThread.Start();
    
                while(!gamer_.ExitState)
                    Thread.Sleep(100);
                exit_ = true;
                Thread.Sleep(100);//give some time
    
                inputThread.Abort();
                outputThread.Abort();
                gamerThread.Abort();
            }
    
            private void InputThreadFunction()
            {
                while (!exit_)
                {
                    connector_.Input(Console.ReadLine());//The problem is here
                    waitForInput.Set();
                    waitForOutput.Set();
                }
            }
    
            private void OutputThreadFunction()
            {
                while (!exit_)
                {
                    waitForOutput.WaitOne();
                    Console.Write(connector_.Output()); // end line will return connector_.Output
                }
            }
    
            private void GamerThreadFunction()
            {
                while (!exit_)
                {
                    switch (gamer_.DoJob())
                    { 
                        case 0:
                            exit_ = true;
                            break;
                        case 1:
                            waitForOutput.Set();
                            break;
                        case 2:
                            waitForInput.WaitOne();
                            break;
                    }
                }
            }
        }
    }
    Կարամ այսքան մասը տալ:

  4. #19
    Մշտական անդամ AMD-ի ավատար
    Գրանցման ամսաթիվ
    30.03.2006
    Գրառումներ
    266
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    սենց դեպքի c++-ով եմ հանդիպել իչքան հիշում եմ abort-ի տեղը teminate գրեցի դզվեց
    բայ վոր ամբողջ կոդը տաիր ավելի լավ կլիներ

    Ավելացվել է 9 րոպե անց
    while (!gamer_.ExitState)
    ստեղ ExitState-ը ինչ փոփոխականա ?
    երևի ստուգումա gamer_-ը վերջացնումա աշխատանքը?
    Վերջին խմբագրող՝ AMD: 22.03.2008, 15:48: Պատճառ: Գրառման ավելացում

  5. #20
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Մեջբերում AMD-ի խոսքերից Նայել գրառումը
    սենց դեպքի c++-ով եմ հանդիպել իչքան հիշում եմ abort-ի տեղը teminate գրեցի դզվեց
    բայ վոր ամբողջ կոդը տաիր ավելի լավ կլիներ

    Ավելացվել է 9 րոպե անց
    while (!gamer_.ExitState)
    ստեղ ExitState-ը ինչ փոփոխականա ?
    երևի ստուգումա gamer_-ը վերջացնումա աշխատանքը?
    1.Վերջին հարցի պատասխանը այո է, ստուգում է թե երբ է gamer-ը վերջացնում իր գործը:
    2.C#-ում տրեդը տերմինեյտ ֆունկցիա չունի:
    3.Լրիվ կոդը տալը անհնար է և անիմաստ է այն պատճայով , որ շատ երկար է և դեր չի խաղում այս հարցում: Ինչ պետք է այստեղ կա: Եթե ուզում եք աշխատացնել ուղղակի ջնջեք ավելորդ մասերը և main-ից կանչեք Run մեթոդը:

    Օրինակ
    HTML կոդ:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Threading;
    
    namespace ZDraft
    {
        class Program
        {
            private string str;
            private bool exit_;
            private bool exitState_;
    
            private AutoResetEvent waitForOutput = new AutoResetEvent(false);
            private AutoResetEvent waitForInput  = new AutoResetEvent(false);
            
            public void Run()
            {
                Thread inputThread = new Thread(new ThreadStart(InputThreadFunction));
                Thread outputThread = new Thread(new ThreadStart(OutputThreadFunction));
    
                inputThread.Start();
                outputThread.Start();
    
                while(!exitState_)
                    Thread.Sleep(100);
                exit_ = true;
                Thread.Sleep(100);//give some time
    
                inputThread.Abort();
                outputThread.Abort();
            }
    
            private void InputThreadFunction()
            {
                while (!exit_)
                {
                    str = Console.ReadLine();
                    if (str == "quit")
                        exitState_ = true;
                    waitForInput.Set();
                    waitForOutput.Set();
                }
            }
    
            private void OutputThreadFunction()
            {
                while (!exit_)
                {
                    waitForOutput.WaitOne();
                    Console.Write(str);
                }
            }
    
            static void Main(string[] args)
            {
                (new Program()).Run();
            }
        }
    }
    Երբ գրում ես quit, հիմնական տրեդը ցիկլից դուրս է գալիս, աբորտ է անում inputThread-ը և outputThread-ը և պրծնում է, սակայն inputThread-ը աբորտ չի լինում, այդ իսկ պատճառով ծրագիրը չի փակվում մինչև կոնսոլին մի բան enter չանես:
    Փորձեք debuger-ով աշխատացնել և quit գրելուց հետո պաուզա տվեք և կտեսնեք, որ միակ ապրող տրեդը inputThread-ն է, որը կանքնած է str = Console.ReadLine(); տողում:
    Վերջին խմբագրող՝ Pchuk: 22.03.2008, 18:57:

  6. #21
    Մշտական անդամ AMD-ի ավատար
    Գրանցման ամսաթիվ
    30.03.2006
    Գրառումներ
    266
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Կոդ:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Threading;
    
    namespace ZDraft
    {
        class Program
        {
            private string str;
            private bool exit_;
            private bool exitState_;
    
            private AutoResetEvent waitForOutput = new AutoResetEvent(false);
            private AutoResetEvent waitForexit = new AutoResetEvent(false);
    
            public void Run()
            {
                Thread inputThread = new Thread(new ThreadStart(InputThreadFunction));
                Thread outputThread = new Thread(new ThreadStart(OutputThreadFunction));
    
                inputThread.Start();
                outputThread.Start();
    
                waitForexit.WaitOne();
                exit_ = true;
                Thread.Sleep(100);//give some time
    
                inputThread.Abort();
                outputThread.Abort();
            }
    
            private void InputThreadFunction()
            {
                while (!exit_)
                {
                    str = Console.ReadLine();
                    if (str == "quit")
                     //   exitState_ = true;
                    waitForexit.Set();
                    waitForOutput.Set();
                }
            }
    
            private void OutputThreadFunction()
            {
                while (!exit_)
                {
                    waitForOutput.WaitOne();
                    Console.Write(str);
                }
            }
    
            static void Main(string[] args)
            {
                (new Program()).Run();
            }
        }
    }
    դզել եմ.իմ մոտ սենց աշխատումա
    պատճառը while (!exitState_)
    Thread.Sleep(100);
    exit_ = true;
    ստեղ էր մինչևվ exit_ = true ես քայլը կհասցներ կատարել մի հատ ցիկլ էր գնում
    ստեղ while (!exit_)
    {
    str = Console.ReadLine();
    if (str == "quit")
    exitState_ = true;
    waitForInput.Set();
    waitForOutput.Set();
    }
    Վերջին խմբագրող՝ AMD: 22.03.2008, 21:13:

  7. #22
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Այո , այս ձևով կաշխատի,բայց էլի իմ ուզածը չի:
    Բացատրեմ
    Այս կարճ օրինակը այդքան էլ հաջող ձևով չէի գրել: Ըստ այս գրածի միայն կոնսոլից կարելի է ծրագիրը փակել, իսկ ես ուզում եմ նաև որ մեկ ուրիշ տրեդից էլ հնարավոր լինի այն փակել: Օրիգինալում կա նաև GamerThread-ը, որը նույնպես կարող է ծրագիրը փակել կախված նրանից թե gamer_.DoJob()-ը ինչ կվերադարձնի: Ոնց ֆռցնենք մեկա այդ րեադլայնի վրա կանգնած տրեդին փակելու խնդրին ենք գալիս:

    Երևի այսպես,
    HTML կոդ:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Threading;
    
    namespace ZDraft
    {
        class Program
        {
            private Random rand = new Random();
            private string str;
            private bool exit_;
            private bool exitState_;
    
            private AutoResetEvent waitForOutput = new AutoResetEvent(false);
            private AutoResetEvent waitForInput  = new AutoResetEvent(false);
            
            public void Run()
            {
                Thread inputThread = new Thread(new ThreadStart(InputThreadFunction));
                Thread outputThread = new Thread(new ThreadStart(OutputThreadFunction));
                Thread gamerThread = new Thread(new ThreadStart(GamerThreadFunction));
    
                inputThread.Start();
                outputThread.Start();
                gamerThread.Start();
    
                while(!exitState_)
                    Thread.Sleep(100);
                exit_ = true;
                Thread.Sleep(100);//give some time
    
                inputThread.Abort();
                outputThread.Abort();
                gamerThread.Abort();
            }
    
            private void InputThreadFunction()
            {
                while (!exit_)
                {
                    str = Console.ReadLine();
                    if (str == "quit")
                        exitState_ = true;
                    waitForInput.Set();
                    waitForOutput.Set();
                }
            }
    
            private void OutputThreadFunction()
            {
                while (!exit_)
                {
                    waitForOutput.WaitOne();
                    Console.WriteLine(str);
                }
            }
    
            private void GamerThreadFunction()
            {
                while (!exit_)
                {
                    switch (rand.Next(3))//instead of gamer_.DoJob()
                    {
                        case 0:
                            exitState_ = true;
                            break;
                        case 1:
                            waitForOutput.Set();
                            break;
                        case 2:
                            waitForInput.WaitOne();
                            break;
                    }
                }
            }
    
            static void Main(string[] args)
            {
                (new Program()).Run();
            }
        }
    }
    random-ի պատճառով մեկ quit հրամանով կփակվի, մեկ մեկ էլ GamerThread-ում կորոշվի , որ ծրագիրը պիտի փակվի և այդ ժամանակ էլ ի հայտ կգա պրոբլեմը:

  8. #23
    Մշտական անդամ AMD-ի ավատար
    Գրանցման ամսաթիվ
    30.03.2006
    Գրառումներ
    266
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Կոդ:
     while (!exit_)
                {                  connector_.Input(Console.ReadLine());//The problem is here
                     Thread.Sleep(100);//tog mi 100ms spasi vor hascni anjati
                     waitForInput.Set();
                    waitForOutput.Set();
                }
    ես մասը սենց գրի . պտի որ քո ուզածը լինի

  9. #24
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Մեջբերում AMD-ի խոսքերից Նայել գրառումը
    Կոդ:
     while (!exit_)
                {                  connector_.Input(Console.ReadLine());//The problem is here
                     Thread.Sleep(100);//tog mi 100ms spasi vor hascni anjati
                     waitForInput.Set();
                    waitForOutput.Set();
                }
    ես մասը սենց գրի . պտի որ քո ուզածը լինի
    Thread.Sleep(100);//tog mi 100ms spasi vor hascni anjati տողին որ հասնի կանջատվի, վատը այն է որ այդ տողին չի հասնում:

  10. #25
    Մշտական անդամ AMD-ի ավատար
    Գրանցման ամսաթիվ
    30.03.2006
    Գրառումներ
    266
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    մի հատ փորձի

  11. #26
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Մեջբերում AMD-ի խոսքերից Նայել գրառումը
    մի հատ փորձի
    Փորցել եմ: Չի օգնում:

  12. #27
    Մշտական անդամ AMD-ի ավատար
    Գրանցման ամսաթիվ
    30.03.2006
    Գրառումներ
    266
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    ես են փոքր օրինակի վրա արեցի օգնեց

  13. #28
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Մեջբերում AMD-ի խոսքերից Նայել գրառումը
    ես են փոքր օրինակի վրա արեցի օգնեց
    Կոդ:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Threading;
    
    namespace ZDraft
    {
        class Program
        {
            private Random rand = new Random();
            private string str;
            private bool exit_;
            private bool exitState_;
    
            private AutoResetEvent waitForOutput = new AutoResetEvent(false);
            private AutoResetEvent waitForInput  = new AutoResetEvent(false);
            
            public void Run()
            {
                Thread inputThread = new Thread(new ThreadStart(InputThreadFunction));
                Thread outputThread = new Thread(new ThreadStart(OutputThreadFunction));
                Thread gamerThread = new Thread(new ThreadStart(GamerThreadFunction));
    
                inputThread.Start();
                outputThread.Start();
                gamerThread.Start();
    
                while(!exitState_)
                    Thread.Sleep(100);
                exit_ = true;
                Thread.Sleep(100);//give some time
    
                inputThread.Abort();
                outputThread.Abort();
                gamerThread.Abort();
            }
    
            private void InputThreadFunction()
            {
                while (!exit_)
                {
                    str = Console.ReadLine();
                    if (str == "quit")
                        exitState_ = true;
                    Thread.Sleep(100); 
                    waitForInput.Set();
                    waitForOutput.Set();
                }
            }
    
            private void OutputThreadFunction()
            {
                while (!exit_)
                {
                    waitForOutput.WaitOne();
                    Console.WriteLine(str);
                }
            }
    
            private void GamerThreadFunction()
            {
                while (!exit_)
                {
                    switch (rand.Next(3))//instead of gamer_.DoJob()
                    {
                        case 0:
                            exitState_ = true;
                            break;
                        case 1:
                            waitForOutput.Set();
                            break;
                        case 2:
                            waitForInput.WaitOne();
                            break;
                    }
                }
            }
    
            static void Main(string[] args)
            {
                (new Program()).Run();
            }
        }
    }
    Ա՞յս օրինակում:

  14. #29
    Մշտական անդամ AMD-ի ավատար
    Գրանցման ամսաթիվ
    30.03.2006
    Գրառումներ
    266
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Կոդ:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Threading;
    
    namespace ZDraft
    {
        class Program
        {
            private string str;
            private bool exit_;
            private bool exitState_;
    
            private AutoResetEvent waitForOutput = new AutoResetEvent(false);
            private AutoResetEvent waitForInput = new AutoResetEvent(false);
    
            public void Run()
            {
                Thread inputThread = new Thread(new ThreadStart(InputThreadFunction));
                Thread outputThread = new Thread(new ThreadStart(OutputThreadFunction));
    
                inputThread.Start();
                outputThread.Start();
    
                while (!exitState_)
                    Thread.Sleep(100);
                exit_ = true;
                Thread.Sleep(100);//give some time
    
                inputThread.Abort();
                outputThread.Abort();
            }
    
            private void InputThreadFunction()
            {
                while (!exit_)
                {
                    str = Console.ReadLine();
                    if (str == "quit")
                        exitState_ = true;
                    Thread.Sleep(100);
                    waitForInput.Set();
                    waitForOutput.Set();
                }
            }
    
            private void OutputThreadFunction()
            {
                while (!exit_)
                {
                    waitForOutput.WaitOne();
                    Console.Write(str);
                }
            }
    
            static void Main(string[] args)
            {
                (new Program()).Run();
            }
        }
    }
    ստեղ

  15. #30
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. հարցեր C#-ի վերաբերյալ

    Մեջբերում AMD-ի խոսքերից Նայել գրառումը
    Կոդ:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Threading;
    
    namespace ZDraft
    {
        class Program
        {
            private string str;
            private bool exit_;
            private bool exitState_;
    
            private AutoResetEvent waitForOutput = new AutoResetEvent(false);
            private AutoResetEvent waitForInput = new AutoResetEvent(false);
    
            public void Run()
            {
                Thread inputThread = new Thread(new ThreadStart(InputThreadFunction));
                Thread outputThread = new Thread(new ThreadStart(OutputThreadFunction));
    
                inputThread.Start();
                outputThread.Start();
    
                while (!exitState_)
                    Thread.Sleep(100);
                exit_ = true;
                Thread.Sleep(100);//give some time
    
                inputThread.Abort();
                outputThread.Abort();
            }
    
            private void InputThreadFunction()
            {
                while (!exit_)
                {
                    str = Console.ReadLine();
                    if (str == "quit")
                        exitState_ = true;
                    Thread.Sleep(100);
                    waitForInput.Set();
                    waitForOutput.Set();
                }
            }
    
            private void OutputThreadFunction()
            {
                while (!exit_)
                {
                    waitForOutput.WaitOne();
                    Console.Write(str);
                }
            }
    
            static void Main(string[] args)
            {
                (new Program()).Run();
            }
        }
    }
    ստեղ
    Այստեղ կաշխատի, որովհետև այստեղ միայն input-ն է որոշողը թե երբ է ծրագիրը փակվելու, բայց ոնց որ գրել էի նախորդ գրառումներից մեկում, այս կոդում սխալմամբ պետքական կոդեր էի ջնջել, ու այս կոդը պրոբլեմի հետ կարելի է ասել կապ չունի, նայիր սրա նախորդ գրառման կոդը:

Էջ 2 5-ից ԱռաջինԱռաջին 12345 ՎերջինըՎերջինը

Թեմայի մասին

Այս թեման նայող անդամներ

Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)

Համանման թեմաներ

  1. Հարցեր համակարգչային գրաֆիկայի վերաբերյալ
    Հեղինակ՝ Ուլուանա, բաժին` Համակարգչային գրաֆիկա
    Գրառումներ: 26
    Վերջինը: 05.12.2020, 12:56
  2. Հարցեր մեքենայի շահագործման վերաբերյալ
    Հեղինակ՝ Artgeo, բաժին` Դեսից - Դենից
    Գրառումներ: 239
    Վերջինը: 03.12.2015, 04:17
  3. Հարցեր CSS-ի վերաբերյալ
    Հեղինակ՝ Rammstein, բաժին` Վեբ
    Գրառումներ: 7
    Վերջինը: 25.04.2015, 09:16
  4. Հարցեր ֆորումից օգտվելու վերաբերյալ
    Հեղինակ՝ Pchuk, բաժին` Ակումբի անցուդարձ
    Գրառումներ: 67
    Վերջինը: 16.07.2010, 14:46
  5. Հարցեր համակարգչի վերաբերյալ:
    Հեղինակ՝ grish.80, բաժին` Հարց ու պատասխան
    Գրառումներ: 9
    Վերջինը: 28.09.2009, 08:27

Էջանիշներ

Էջանիշներ

Ձեր իրավունքները բաժնում

  • Դուք չեք կարող նոր թեմաներ ստեղծել
  • Դուք չեք կարող պատասխանել
  • Դուք չեք կարող կցորդներ տեղադրել
  • Դուք չեք կարող խմբագրել ձեր գրառումները
  •