PDA

Դիտել ողջ տարբերակը : հարցեր C#-ի վերաբերյալ



Ֆելո
29.11.2007, 19:34
ով C#-ից հարց ունի, թող ստեղ գրի, կփորձենք պատասխանել.

ես մի հարց ունեմ. ոնց գրեմ, որ CheckBox-ի ծիտիկը դնելուց առաջ DateTimePicker-ը լինի ոչ ակտիվ, դնելուց հետո ակտիվ:oy

Barça
29.11.2007, 20:47
if (checkBox1.Checked)
dateTimePicker1.Enabled = true;
else dateTimePicker1.Enabled = false;

պետքա որ սենց մի բան լինի, մինչև էտել սկզբում dateTimePicker1.Enabled=false որ check անելուց հետո նոր true դառնա

Ֆելո
29.11.2007, 21:28
if (checkBox1.Checked)
dateTimePicker1.Enabled = true;
else dateTimePicker1.Enabled = false;

պետքա որ սենց մի բան լինի, մինչև էտել սկզբում dateTimePicker1.Enabled=false որ check անելուց հետո նոր true դառնա

առաջի մասը աշխատումա, բայց 2-րդը չէ, այսինքն բացելուց ծիտիկը դրած չի, բայց ակտիվա dateTimePicker-ը:(

Ավելացվել է 5 րոպե անց

if (checkBox1.Checked)
dateTimePicker1.Enabled = true;
else dateTimePicker1.Enabled = false;

պետքա որ սենց մի բան լինի, մինչև էտել սկզբում dateTimePicker1.Enabled=false որ check անելուց հետո նոր true դառնա

լավ, հասկացա. սկզբում dateTimePicker1.Enabled=false-ի տեղը InitializeComponent();-ից հետո պետքա գրվի this.dateTimePicker1.Enabled = false;;)

Barça
29.11.2007, 21:53
որ ասել էի սկզբից էտի ոչ թե if-ից առաջ էի ասել այլ հենց InitializeComponent();-ում.
բայց ինչի InitializeComponent();-ից հետո որ ?
հենց իրա մեջել կարաս գրես.

hippy w.s
30.11.2007, 10:34
regexp-ի մասին պարազա C# -ում ով ինչ ռեսուռսների պարզա օգտակար տեղ կարա ասի մենակ ռուսերեն:o
շնորհակալություն նախապես

Guest
20.03.2008, 17:26
Անհրաժեշտ է C#-ի լավ իմացությամն բարի մարդ (հատկապես Web-ի մասով (ASP.NET) )
Ով կզոհի իր մեկ օրը հանուն անծանոթ (կամ գուցե ծանոթ) մարդկանց.
Պահանջվում է փորցառու մարդու կոնսուլտացիա: :)

Գրել 203910237 (ICQ) կամ hayk.manashyan (Skype)

Pchuk
20.03.2008, 19:03
Ուրեմն ունեմ մի հատ thread, որը կոնսոլից անընդհատ տվյալներ է կարդում: Console.ReadLine() է կանչում և սպասում է մինչև մի բան գրես: Հիմնական thread-ից այդ thread-ը abort եմ անում, բայց թարսի պես այդ thread abort չի լինում, abort անելուց հետո և կոնսոլում որևէ բան գրելուց հետո է abort լինում: Ոնց անեմ որ thread -ը միանգամից abort լինի, թե չե հիմնական thread-ը պրծնում է գործը,իսկ ծրագիրը չի անջատվում, որովհետև մյուս thread-ը չի անջատվել:

onlooker
20.03.2008, 23:11
Ուրեմն ունեմ մի հատ thread, որը կոնսոլից անընդհատ տվյալներ է կարդում: Console.ReadLine() է կանչում և սպասում է մինչև մի բան գրես: Հիմնական thread-ից այդ thread-ը abort եմ անում, բայց թարսի պես այդ thread abort չի լինում, abort անելուց հետո և կոնսոլում որևէ բան գրելուց հետո է abort լինում: Ոնց անեմ որ thread -ը միանգամից abort լինի, թե չե հիմնական thread-ը պրծնում է գործը,իսկ ծրագիրը չի անջատվում, որովհետև մյուս thread-ը չի անջատվել:

im kartciqov abort linum e, bayc minchev ayd erkrord potok@ hascnum e kanchel Console.Readline() , sakayn himnakan potok@ ashxatum ev du ches hascnum grel... ev karoghanum es miayn ayn jamanak, erb himnakan@ anelu ban chuni... pordzir poxel erkrordi priorityn, vor ancankali Readline@ chhascvi kanchvel,,, ete code@ gres, guce karoghanam ognel...

Մոդերատորական: Ծանոթացեք ակումբի կանոնադրությանը (http://www.akumb.am/showthread.php?t=2437#post67297)։ Մասնավորապես ֆորումում լատիներեն տառերով հայերեն գրելն արգելվում է։
Եթե ինչ-որ պատճառով հայերեն մեքենագրելու հետ կապված դժվարություններ ունեք, ապա կարող եք օգտագործել ֆորումում ներդրված հայերեն մեքենագրման համակարգը, Տրանսլիտի ձևափոխիչը (http://www.akumb.am/showthread.php?t=42) կամ կարդացեք «Ինչպե՞ս գրել հայերեն» (http://www.akumb.am/showthread.php?t=279) թեման:

Pchuk
21.03.2008, 10:26
im kartciqov abort linum e, bayc minchev ayd erkrord potok@ hascnum e kanchel Console.Readline() , sakayn himnakan potok@ ashxatum ev du ches hascnum grel... ev karoghanum es miayn ayn jamanak, erb himnakan@ anelu ban chuni... pordzir poxel erkrordi priorityn, vor ancankali Readline@ chhascvi kanchvel,,, ete code@ gres, guce karoghanam ognel...

Հաստատ աբորտ չի լինում, որովհետև հիմնական տռէդի պրծնելուց հետո դեբագ մոդում պաուզա եմ տալիս: ցույց է տալիս որ 2-րդ տրէդը Console.Readline()-ի վրա կանգնած սպասում է և աբորտ չի լինում մինչև այդ տողի վրայով չանցնես:Մեկ էլ հույսը պետք չի դնել նրա վրա ,որ պռիորիտետը փոխելով չի հասցնի 2-րդ տրեդը աշխատել, կարող է 2 յադռոանի պռոցեսոր է և զուգահեռ են աշխատում:

onlooker
21.03.2008, 23:35
Հաստատ աբորտ չի լինում, որովհետև հիմնական տռէդի պրծնելուց հետո դեբագ մոդում պաուզա եմ տալիս: ցույց է տալիս որ 2-րդ տրէդը Console.Readline()-ի վրա կանգնած սպասում է և աբորտ չի լինում մինչև այդ տողի վրայով չանցնես:Մեկ էլ հույսը պետք չի դնել նրա վրա ,որ պռիորիտետը փոխելով չի հասցնի 2-րդ տրեդը աշխատել, կարող է 2 յադռոանի պռոցեսոր է և զուգահեռ են աշխատում:


փաստորեն ես հիմարություն էի գրել աբորտի մասին... բայգ դա չի փոխում փոստիս հայտարարը... անցանկալի րիդլայնը չպետք է կանչվի. պորձիր ստատիկ բուլեան տիպի փոփոխական սարքես,,, աբորտ կանչելուց այն ֆոլս դարձնես... իսկ երկրորդ պոտոկի ֆունկցիայում Րիդլայն կանչելուց առաջ ստուգես դրա տրու լինելը...

Pchuk
21.03.2008, 23:52
փաստորեն ես հիմարություն էի գրել աբորտի մասին... բայգ դա չի փոխում փոստիս հայտարարը... անցանկալի րիդլայնը չպետք է կանչվի. պորձիր ստատիկ բուլեան տիպի փոփոխական սարքես,,, աբորտ կանչելուց այն ֆոլս դարձնես... իսկ երկրորդ պոտոկի ֆունկցիայում Րիդլայն կանչելուց առաջ ստուգես դրա տրու լինելը...

Չի օգնի որովհետև զուգահեռ են աշխատում տռեդները: 2րդ տռեդը կստուգի բուլը - որը կլինի 1 և կկանչի Րիդլայն , հետո 1-ին տռեդը բուլը 0 կդարձի և աբորտ կկանչի , բայց 1-ն Րիդլայն է անում ու չի անջատվի: :(

onlooker
21.03.2008, 23:54
Չի օգնի որովհետև զուգահեռ են աշխատում տռեդները: 2րդ տռեդը կստուգի բուլը - որը կլինի 1 և կկանչի Րիդլայն , հետո 1-ին տռեդը բուլը 0 կդարձի և աբորտ կկանչի , բայց 1-ն Րիդլայն է անում ու չի անջատվի: :(

false dardznelu pahin popoxakan@ lock ara...

Pchuk
21.03.2008, 23:59
false dardznelu pahin popoxakan@ lock ara...

լավ մտածիր:think, արդյոք լոք անելը կօգնի, որովհետև մինչև լոքը 2-րդ տռեդը Րեադլայնին հասել է:

onlooker
22.03.2008, 00:21
լավ մտածիր:think, արդյոք լոք անելը կօգնի, որովհետև մինչև լոքը 2-րդ տռեդը Րեադլայնին հասել է:

ներիր խնդրում եմ, ուղղակի մահացու հոգնած վիճակում մի պրոյեկտի վրա եմ մտածում, և ի միջիայլոց ու ուղեղիս կողմից տարրական անալիզի չենթարկվաց բաներ գրում... թե լոքը ինչ կապ ուներ :oy լավ, բայց ախր էդ կոնսոլը ինչիդ է պետք:) ... վերջի վերջո կարող ես հիմնական պոտոկի աշխատանքի վերջում դուրս բերել... «սեղմեք Մուտք ելքի համար» :)

Pchuk
22.03.2008, 00:30
ներիր խնդրում եմ, ուղղակի մահացու հոգնած վիճակում մի պրոյեկտի վրա եմ մտածում, և ի միջիայլոց ու ուղեղիս կողմից տարրական անալիզի չենթարկվաց բաներ գրում... թե լոքը ինչ կապ ուներ :oy լավ, բայց ախր էդ կոնսոլը ինչիդ է պետք:) ... վերջի վերջո կարող ես հիմնական պոտոկի աշխատանքի վերջում դուրս բերել... «սեղմեք Մուտք ելքի համար» :)

թարսի պես պետք է:(, որովհետև կա 2 ծրագիր, որից մեկը կոնսոլ է, իսկ մյուսը սովորական GUI-ով ծրագիր, որը աշխատացնում է կոնսոլը, ու աշխատանքի ընթացքում կոնսոլի եկրանը չի երևում, որովհետև հիմնական ծրագիրն է ղեկավարում կոնսոլի մուտքն ու ելքը: Հիմա ես ոնց ասեմ այդ կոնսոլ ծրագրին:), որ գիտես ինչ վերջում մի հատ անկապ բան գրի որ տռեդս փակվի:

onlooker
22.03.2008, 14:24
թարսի պես պետք է:(, որովհետև կա 2 ծրագիր, որից մեկը կոնսոլ է, իսկ մյուսը սովորական GUI-ով ծրագիր, որը աշխատացնում է կոնսոլը, ու աշխատանքի ընթացքում կոնսոլի եկրանը չի երևում, որովհետև հիմնական ծրագիրն է ղեկավարում կոնսոլի մուտքն ու ելքը: Հիմա ես ոնց ասեմ այդ կոնսոլ ծրագրին:), որ գիտես ինչ վերջում մի հատ անկապ բան գրի որ տռեդս փակվի:

փորփրեցի ու չկարողացա... :8

AMD
22.03.2008, 15:01
կոդտ տուր նայեմ կարողա մի բան դուրս գա

Pchuk
22.03.2008, 15:10
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;
}
}
}
}
}


Կարամ այսքան մասը տալ:

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

Ավելացվել է 9 րոպե անց
while (!gamer_.ExitState)
ստեղ ExitState-ը ինչ փոփոխականա ?
երևի ստուգումա gamer_-ը վերջացնումա աշխատանքը?

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

Ավելացվել է 9 րոպե անց
while (!gamer_.ExitState)
ստեղ ExitState-ը ինչ փոփոխականա ?
երևի ստուգումա gamer_-ը վերջացնումա աշխատանքը?

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

Օրինակ


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(); տողում:

AMD
22.03.2008, 21:04
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();
}

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

Երևի այսպես,


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

AMD
23.03.2008, 11:21
while (!exit_)
{ connector_.Input(Console.ReadLine());//The problem is here
Thread.Sleep(100);//tog mi 100ms spasi vor hascni anjati
waitForInput.Set();
waitForOutput.Set();
}

ես մասը սենց գրի . պտի որ քո ուզածը լինի

Pchuk
23.03.2008, 12:59
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 տողին որ հասնի կանջատվի, վատը այն է որ այդ տողին չի հասնում:

AMD
23.03.2008, 13:46
մի հատ փորձի

Pchuk
23.03.2008, 13:50
մի հատ փորձի

Փորցել եմ: Չի օգնում:

AMD
23.03.2008, 13:52
ես են փոքր օրինակի վրա արեցի օգնեց

Pchuk
23.03.2008, 13:55
ես են փոքր օրինակի վրա արեցի օգնեց



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();
}
}
}

Ա՞յս օրինակում:

AMD
23.03.2008, 13:58
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();
}
}
}
ստեղ

Pchuk
23.03.2008, 14:03
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-ն է որոշողը թե երբ է ծրագիրը փակվելու, բայց ոնց որ գրել էի նախորդ գրառումներից մեկում, այս կոդում սխալմամբ պետքական կոդեր էի ջնջել, ու այս կոդը պրոբլեմի հետ կարելի է ասել կապ չունի, նայիր սրա նախորդ գրառման կոդը:

AMD
23.03.2008, 14:14
inputThread.Start();
outputThread.Start();
[waitForexit.WaitOne();
exit_ = true;
Thread.Sleep(100);//give some time

inputThread.Abort();
outputThread.Abort();

սենց գրի ու ցանկացած Thread-ից սիգնալ տու waitForexit.Set();

Pchuk
23.03.2008, 14:20
inputThread.Start();
outputThread.Start();
[waitForexit.WaitOne();
exit_ = true;
Thread.Sleep(100);//give some time

inputThread.Abort();
outputThread.Abort();

սենց գրի ու ցանկացած Thread-ից սիգնալ տու waitForexit.Set();

Էլի չի օգնի:(




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 AutoResetEvent waitForOutput = new AutoResetEvent(false);
private AutoResetEvent waitForInput = 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));
Thread gamerThread = new Thread(new ThreadStart(GamerThreadFunction));

inputThread.Start();
outputThread.Start();
gamerThread.Start();

waitForExit.WaitOne();
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")
waitForExit.Set();
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:
waitForExit.Set();
break;
case 1:
waitForOutput.Set();
break;
case 2:
waitForInput.WaitOne();
break;
}
}
}

static void Main(string[] args)
{
(new Program()).Run();
}
}
}

AMD
23.03.2008, 14:25
դե որ լրիվ կոդը չունեմ չեմ կարա կոնկրետ բան ասեմ
եթե ուզում ես մի հատ քո ծրագրի նման օրինակ կազմի տու տենամ մի բան կարամ ասեմ.

Pchuk
23.03.2008, 14:27
դե որ լրիվ կոդը չունեմ չեմ կարա կոնկրետ բան ասեմ
եթե ուզում ես մի հատ քո ծրագրի նման օրինակ կազմի տու տենամ մի բան կարամ ասեմ.

Վերջին գրառման կոդը լրիվ աշխատող ծարագիր է:

Elmo
18.12.2008, 14:40
Ո՞վ կարա ինձ DataTable տիպում ֆիլտրեր կիրառելու գաղափարը մարդերեն բացատրի:

օրինակ ստեղ ֆիլտրում եմ աղյուսակի eID սյան 20-ից մեծ eID պարունակող տողերը


DataView filterbyname = new DataView(); //DataView կլասի օբիեկտ, որը հենց ֆիլտրելու համար էլ ռեալիզացրած ա
filterbyname.Table = myTable; // ցույց ենք տալիս ինչ աղյուսակի հետ պետք ա գործ ունենա
filterbyname.RowFilter = "eID > '20'";// ինչ լոգիկայով պետք ա ֆիլտրի ու որ սյունը՝ մեր դեպքում eID
Table.DataSource = filterbyname; //վիզուալ ույց տա ֆիլտրած հատվածը

Ամեն ինչ հասկանալի ա, բայց ստեղ

string filterStr = "eID > 20";//նույն լոգիկան, նույն սյունի նկատմամբ
DataRow[] frows = myTable.Select(filterStr)//մի տարբերությամբ ընտրած սյուներից պետք ա կազմի տողերի զանգավծ:

պետք ա ստեղծվի DataRow -ի զանգված, որը պետք ա պարունակի ֆիլտրին համապատասխան տողերը, այսինքն կազմված լինի աըդ տողերից:

Առաջին դեպքում ամեն ինչ ստացվում ա ու հասկանալի ա, իսկ երկրորդ դեպքը ոչ ստացվում ա, ոչ էլ կարողանում եմ լիովին ըմբռնել:
մի հատ օրինակ տվեք էլի;

Bravo
25.05.2009, 00:05
Ժողովուրդ մի հատ օգնեք C# ով շախմատի 8 թագուհիների խնդիրը չի ստացվում
ես տողում ինչ որ error - ա բերում`
branchStates.Push(new State {solution = new List<Point>(), stateBoard = branch});
A new expression requires () or [] after type

linus
25.05.2009, 00:22
Ժողովուրդ մի հատ օգնեք C# ով շախմատի 8 թագուհիների խնդիրը չի ստացվում
ես տողում ինչ որ error - ա բերում`
branchStates.Push(new State {solution = new List<Point>(), stateBoard = branch});
A new expression requires () or [] after type
ես դոդիեզի քերականությունը անգիր չեմ հիշում, բայց միգուցե {} փակագծերը փոխարինես () ով?:think

aerosmith
06.07.2009, 22:27
ժող ջան մի սայթ կասեք, որտեղ գրված լինեն Win-приложения-ների ֆունկցիաներ, իրանց բացատրություններով, մենակ խնդրում եմ գիրք չառաջարկեք էլի։ Ցանկալիա ռուսերենով լինի բացատրությունները։

One_Way_Ticket
06.07.2009, 23:14
http://www.rsdn.ru/

aerosmith
07.07.2009, 10:57
Շատ շնորհակալություն, բայց ճիշտն ասած ցի շարփ-ի վերաբերյալ ոչ մի բան չգտա։

aerosmith
14.07.2009, 13:13
ժող ջան մի հարց
հնարավոր ա ինտերֆեյսում հայտարարված մեթոդը տարբեր ժառանգված կլասսներում տարբեր ռեալիզացիա ունենան??? այսինքն են նկատի ունեմ որ մի մեթոդը մի քանի անգամ ռեալիզացվի , բնականաբար տարբեր ժառանգված կլասսներում։

Legolas
14.07.2009, 23:18
Իհարկե, ինտերֆեյսի իմաստը հենց էտ ա , ինտերֆեյսի մեջ մեթոդի ռեալիզացիան չկա, մենակ անունն ա, պարամետրերը , վերադարւևրձվող արժեքի տիպը և այլն:
հենց ինչ որ կլաս ժառանգում ա էտ ինտերֆեյսը, պարտադիր պիտի գրվի ինտերֆեյսի բոլոր մեթոդների ռեալիզացիան(ու ոչ միայն մեթոդների), ու տարբեր կլասներ կարող են ռեալիզացնել բնականաբար տարբեր ձևով:

aerosmith
14.07.2009, 23:25
մեկ ել ինչպես կարամ MessageBox-i հաղորդագրոթյուններին գունավորում տալ???

Elmo
15.07.2009, 10:55
մեկ ել ինչպես կարամ MessageBox-i հաղորդագրոթյուններին գունավորում տալ???

Պետք ա վրձինով նկարես: Ահագին ժամանակ ա չեմ զբաղվել C# -ով, բայց գունահովր հաղորդագրությունները հիշում եմ, որ վրձինով էի գրում: Գրաֆիկա բաժնում նայի, կգտնես:

aerosmith
15.07.2009, 11:27
երևի ես իմ հարցերով հոգնացրեցի, բայց դե նոր եմ սովորում վին ապպլիքեյշն ։
ինձ մի հարց էլ ա հետաքրքրում։
ինչպես կարամ Button-i ձևը փոխեմ ասենք ուղղանկյունից դարձնեմ շրջանաձև??
ուղղակի գրքերի մեջ էնքան հակիրճա ամեն ինչը գրած որ շատ բաներ կան , հարցականա մնում կարդացողի մոտ։

Legolas
15.07.2009, 12:52
երևի ես իմ հարցերով հոգնացրեցի, բայց դե նոր եմ սովորում վին ապպլիքեյշն ։
ինձ մի հարց էլ ա հետաքրքրում։
ինչպես կարամ Button-i ձևը փոխեմ ասենք ուղղանկյունից դարձնեմ շրջանաձև??
ուղղակի գրքերի մեջ էնքան հակիրճա ամեն ինչը գրած որ շատ բաներ կան , հարցականա մնում կարդացողի մոտ։



//using System.Drawing.Drawing2D;
GraphicsPath gp=new GraphicsPath();
gp.AddEllipse(0,0,50,60);

button1.Region = new Region(gp);

button1 ի տեսքը դարձնում ա էլիպս 50,60 չափերով:
Elmo ջան վրձինը որն ա?:D:D

Elmo
15.07.2009, 16:17
Elmo ջան վրձինը որն ա?

Brush (http://msdn.microsoft.com/en-us/library/aa983677(VS.71).aspx)-ն ա:
եթե սխալվում եմ, քարով մարով չխփեք, էլի: Ես brush -ով էի գունավոր տեքստ դուրս հանում: Կարող ա ավելի ցիվիլ ձև կա:

MSDN http://msdn.microsoft.com/en-us/library/aa984365(VS.71).aspx

aerosmith
15.07.2009, 20:20
ժող ջան շատ շնորհակալություն օգնությունների համար։:)

aerosmith
27.07.2009, 17:09
Ժող ջան, ինձ սի շառփ-ի լաբորատոր աշխատանքների ձեռնարկ է հարկավոր, կամ էլ մի լավ խնդրագիրք։ Ցանկալի է ռուսերեն լեզվով լինի։
Ուղղակի սենց որ թեմաները սովորում եմ, ուզում եմ խնդիրներ էլ լինեն, որ ամեն թեման ամրապնդեմ։

Wedge
31.07.2009, 21:37
Н. Культин - C# в задачах и примерах http://torrents.ru/forum/viewtopic.php?t=1965029

Պետք է գրանցվես, որ կարողանաս քաշես:

Իմ բլոգում էլ մեկ-մեկ հետաքրքիր բաներ գրում եմ http://dotnet_am.livejournal.com/

aerosmith
14.08.2009, 17:55
ժող ջան սենց մի հարց։
մեկնումեկդ գիտի, թե search-ի կամ find-ի դիալոգ պատուհանի կասսը որնա՞՞՞

Wedge
16.08.2009, 10:49
Չկա , ինքդ պիտի գրես:

Այստեղ պատրաստի օրինակ կա՝ http://www.eggheadcafe.com/community/aspnet/2/10046576/no.aspx

aerosmith
05.09.2009, 17:28
հաևգելի c# kam mysql իմացողներ, ոնց կարամ մայեսքյուել ի տվյալները օգտագործեմ c# ում՞՞՞՞՞՞

Legolas
07.09.2009, 13:39
հաևգելի c# kam mysql իմացողներ, ոնց կարամ մայեսքյուել ի տվյալները օգտագործեմ c# ում՞՞՞՞՞՞

Բա էն սաղ գուգլը որ գրածա ու՞մ համար ա (connecting to mysql with C# )
տարբեր ձևեր կան , փորձի էս մեկը

սա քաշի ինստալ արա, որ Visual Studion կարենա կպնի mysql-ին (Setting up the MyODBC driver)
http://www.geekpedia.com/sample/CSharpToMySQL/MyODBC%203.51.msi

սա էլ պարզ օրինակը(c# կոդ)
http://www.geekpedia.com/sample/CSharpToMySQL/CSharpToMySQL.zip

aerosmith
12.09.2009, 20:54
Ժող ջան, ինչպես կարամ, շարփով , ջփեգ նկաիրի բինար կոդը դարձնեմ սթռինգ տիպի՞

aerosmith
30.12.2009, 18:36
շատ շտապա,
ոնց կարող եմ ֆայլեր գրանցեմ ռեսուրսում, և օգտագործեմ ռեսուրսներից էդ ֆայլերը

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

FactorX
29.06.2010, 16:29
Ով կարա ասի dictionary-ի մեջ ոնց կարելիա value-ից ստանաս key-ը, կամ ինդեքսը:
Եթե dictionary-ի մեջ դա հնարավոր չի, կարող եք ուրիշ Key-Value Collection խորհուրդ տալ? :8

FactorX
29.06.2010, 19:58
Մերսի էլ պետք չի, ուրիշ ձև արեցի :pardon

Lusina
21.05.2011, 17:54
Երեխեք մի սենց հարց,Global.asax.cs.ը Global.asax.ի հետ ավտոմատ չի ստեղծվում,որտեղի՞ց պետք ա ավելացնեմ .cs.ը.կամ էլ մի ուրիշ տարբերակ առաջարկեք, գլոբալ փոփոխական որտեղ հայտարարեմ

Dark_Angel
17.06.2011, 13:14
Global.asax-ը գլոբալ փոփոխականներ պահելու հետ մի քիչ կապ չունի, իսկ թե որտեղ կարելիա պահել, դա խիստ կապվածա նրա հետ, թե ինչի համարա պետք էտ փոփոխականը. ASP.NET-ում կա Session, Application, ViewState, Cache ու կախված նրանից թե ինչի համար, ում համարա պետք էտ փոփոխականը, դրանից ելնելով կարելիա պահել այն նշված object-ներից մեկում.

Lusina
17.06.2011, 17:55
Global.asax-ը գլոբալ փոփոխականներ պահելու հետ մի քիչ կապ չունի, իսկ թե որտեղ կարելիա պահել, դա խիստ կապվածա նրա հետ, թե ինչի համարա պետք էտ փոփոխականը. ASP.NET-ում կա Session, Application, ViewState, Cache ու կախված նրանից թե ինչի համար, ում համարա պետք էտ փոփոխականը, դրանից ելնելով կարելիա պահել այն նշված object-ներից մեկում.

Շնորհակալություն օգնության համար, խնդիրը վաղուց լուծված է, Session.ը շատ հարմար տարբերակ էր և դա եմ օգտագործել.պարզապես կոնկրետ Global.asax.ի հետ կապված խնդիրը չէր լուծվել, դրա համար չէի գրել:)

aerosmith
17.06.2011, 20:45
Երեխեք մի սենց հարց,Global.asax.cs.ը Global.asax.ի հետ ավտոմատ չի ստեղծվում,որտեղի՞ց պետք ա ավելացնեմ .cs.ը.կամ էլ մի ուրիշ տարբերակ առաջարկեք, գլոբալ փոփոխական որտեղ հայտարարեմ

Չնայած խնդիրը լուծում ստացել է, բայց այնուամենայնիվ ասեմ.
.aspx-ում գլոբալ փոփոխականներ կարելի է պահել <asp:HiddenField քընթրոլում, միայնթե պետք է սկզբում նախատեսված տիպը կոնվերտ անել սթռինգ, այնուհետև պահել, իսկ օգտագործելու ժամանակ էլ պետք է այն հետադաձ կոնվերտել ուզած տիպ :)

V!k
11.09.2013, 13:43
մի հարց ունեմ C#-ից, անհրաժեշտ է ռեկուրսիայով ֆակտորիալ հաշվել, ի՞նչն ա ստեղ սխալ:(


​using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Mutqagreq tiv:");
int k=int.Parse(Console.ReadLine());
Console.WriteLine("Dzer mutqagrac tvi factorialn e:" , fact(k));
}
int fact (int n){

if ((n==0)^(n==1))
return 0;
else
return n*fact(n-1);
}
}
}

Lusina
11.09.2013, 15:30
մի հարց ունեմ C#-ից, անհրաժեշտ է ռեկուրսիայով ֆակտորիալ հաշվել, ի՞նչն ա ստեղ սխալ:(


​using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Mutqagreq tiv:");
int k=int.Parse(Console.ReadLine());
Console.WriteLine("Dzer mutqagrac tvi factorialn e:" , fact(k));
}
int fact (int n){

if ((n==0)^(n==1))
return 0;
else
return n*fact(n-1);
}
}
}

Պետք ա լինի return 1; քո գրածով միշտ 0 կստանաս.

Anahit**
27.11.2015, 16:17
Խմբի ծրագրավորողնե՛ր, ձեզանից կ՞ա ինչ-որ մեկը ով որոշակի գումարի դիմաց C#-ով ծրագրեր է գրում: Խոսքը գնում է բավականին հեշտ ծրագրերի մասին: Ինձ պետք է համալսարանում անհատական աշխատանքի համար:

Anahit**
01.12.2015, 18:50
Որ խնդրեմ չե՞ք օգնի գրեմ այս խնդիրը C#-ով:
. Տրված է A(M,N) երկչափ ամբողջ թվային մատրիցա:A(i,j) էլեմենտը կանվանենք հատուկ,եթե այն հանդիսանում է Ֆիբոնաչիի թիվ և այդ թվի թվանշանների գումարը պարզ թիվ է:Հեռացնել այդ զանգվածի այն տողերը,որոնցում կա գոնե մեկ հատուկ էլեմենտ: Նախապես շնորհակալություն

Արամ
02.12.2015, 01:33
Ի՞նչը չի ստացվում և ի՞նչ եք փորձել։