User Tag List

Ցույց են տրվում 1 համարից մինչև 15 համարի արդյունքները՝ ընդհանուր 68 հատից

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

Համակցված դիտում

Նախորդ գրառումը Նախորդ գրառումը   Հաջորդ գրառումը Հաջորդ գրառումը
  1. #1
    Սկսնակ Pchuk-ի ավատար
    Գրանցման ամսաթիվ
    23.03.2006
    Տարիք
    39
    Գրառումներ
    88
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

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

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

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

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

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

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

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

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

  4. #4
    Սկսնակ 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;
                    }
                }
            }
        }
    }
    Կարամ այսքան մասը տալ:

  5. #5
    Մշտական անդամ 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: Պատճառ: Գրառման ավելացում

  6. #6
    Սկսնակ 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:

  7. #7
    Մշտական անդամ 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:

  8. #8
    Սկսնակ 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-ում կորոշվի , որ ծրագիրը պիտի փակվի և այդ ժամանակ էլ ի հայտ կգա պրոբլեմը:

  9. #9
    Սկսնակ անդամ
    Գրանցման ամսաթիվ
    12.05.2008
    Գրառումներ
    11
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

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

    Ժողովուրդ ջան ինձ կարաք օգնեք մի հարցում:
    Ս# գախտնագրող և վերծանող ծրագիրա հարկավոր որը իր մեջ ներառի գոնե մի քանի ալգորիթմներ (Դես, 3դես, ՌՍԱ, ԱԵՍ և այլն);
    Նախապես շնորհակալություն

Թեմայի մասին

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

Այս պահին թեմայում են 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

Էջանիշներ

Էջանիշներ

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

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