Diskuze: Vlastnosti objektu z Form1 do triedy

C# .NET .NET (C# a Visual Basic) Vlastnosti objektu z Form1 do triedy American English version English version

Avatar
Tayson
Člen
Avatar
Tayson:

Zdravim

Mam nasledujuci problem. Mam vytvoreny Form1, triedu A, triedu B. V triede A mam vytvorenie vlakna a vykonavanie funkcie v tom vlakne. Vo Form1 som si spravil inštanciu tiredy A a vlakno spustam a pozastavujem. Lenze ak si vytvorim aj instanciu triedy A v triede B tak nemozem to iste vlakno ak je spustene cez Form1 zastavit. Ako mam vytvorit druhy objekt v triede B aby poznalo spustene vlakno v objekte vo Forme1.

Dakujem

 
Odpovědět 29.1.2014 0:01
Avatar
Jakub Lásko[Saarix]:

Tak ve třídě B manipuluj s vláknem, které předáš ze třídy A. A budeš ho moct zastavit i ze třídy B.

Nahoru Odpovědět 29.1.2014 8:16
Časem je vše možné.
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Tayson
MrPabloz:

Jak by ti tady někdo řekl, DI, předej si referenci z Form1 do třídy B při vytvoření, tím pak budeš moci manipulovat v třídě B s daným vláknem

Nahoru Odpovědět 29.1.2014 8:56
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Tayson
Člen
Avatar
Odpovídá na MrPabloz
Tayson:

Vies mi nejako poradit ako to spravit ?

 
Nahoru Odpovědět 29.1.2014 13:07
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Tayson
MrPabloz:

Omlouvám se, ale v C# nedělám, neznám tedy přesnou syntaxi, ale napsal sem ti to tu aspon obecně, tak doufám že to pochopíš :) a doufám že sem to zprávně sepsal :D

class A{
        private Thread a;//Objekt typu Vlákno
        A(){    a=new Thread();};
        public Thread getTh(){return a;};
}

class B{
        private Thread b;
        B(Thread x){b=x;};//předání vlákna v konstruktoru
        public void stopTh(){b.stop();}
}

class Form1
{
        A alfa=new A();
        B beta=new B(alfa.getTh());
}
Nahoru Odpovědět 29.1.2014 13:20
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na MrPabloz
Jan Vargovský:

To je přesně způsob jak se to nemá používat.

 
Nahoru Odpovědět 29.1.2014 13:25
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Jan Vargovský
MrPabloz:

Nějak nechápu proč, tedy důvod?

Nahoru Odpovědět 29.1.2014 13:29
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Tayson
Člen
Avatar
Odpovídá na Jan Vargovský
Tayson:

Vies mi poradit nejaky sposob ako sa to ma pouzivat ?

 
Nahoru Odpovědět 30.1.2014 15:42
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Tayson
Jan Vargovský:

Nevím co řešíš.

MrPabloz nevím proč vytvářet vytvářet objekt a, když vytvořím vlákno a přidám přímo to a né že to mám takhle zbytečně někde ještě schované.

 
Nahoru Odpovědět 30.1.2014 15:58
Avatar
Tayson
Člen
Avatar
Odpovídá na Jan Vargovský
Tayson:

Nerozumiem celkom tvojej odpovedi

 
Nahoru Odpovědět 30.1.2014 16:20
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Tayson
Jan Vargovský:

Jeto jako kdyby udělal třídu:

class MojeMatematika
{
private Math math = new Math();

public double VypocitejCosinus(double x)
{
return math.Cos(x);
}
}

Co by to mělo za smysl?

Ten kód nefunguje, protože math je statická třída, ale je to to samé jako tvůj. Btw, vadilo mi už jen to, že děláš vlastnosti po Jave. Tady jsi v .NETu.

 
Nahoru Odpovědět 30.1.2014 16:27
Avatar
Tayson
Člen
Avatar
Odpovídá na Jan Vargovský
Tayson:

Ale my dvaja sa nerozumieme ... ide o to ze ja ked si vytvorim v triede A funkciu ktora mi bude pocitat od jedna do milion v osobitnom vlakne a vo forme ak si vytvorim instanciu na tuto triedu tak si pocatie mozem pozastavit a znova spustit ... ale ak chcem to iste vlakno pozastavit aj spustit v triede B tak potrebujem si vytvoreny objekt v triede B previazat s objektom vo forme aby som to iste vlakno dokazal pozastavit aj spustit

 
Nahoru Odpovědět 30.1.2014 16:54
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Tayson
Jan Vargovský:

A proč bys nemohl spravovat to vlákno přímo? Proč spracovávat instanci, která má funkcionalitu jako to vlákno? Tvoje třída je užitečná jako ta moje matematická třída. Využíváš už existující objekt a nic víc. Akorát ty tam dáváš nesmyslné Javovské get metody a navíc je to celkově divné.

To máš prostě jako kdybys udělal třídu MujForm a ta by měla jen vlastnost na nějakou instanci Formu, proč? Není lepší si přímo předávat instanci Formu než předávat MujForm a z toho až tahat Form ?

 
Nahoru Odpovědět 30.1.2014 17:09
Avatar
Tayson
Člen
Avatar
Odpovídá na Jan Vargovský
Tayson:

A ako si mam tu inštanciu predávať ?

 
Nahoru Odpovědět 30.1.2014 17:21
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Tayson
Jan Vargovský:

Úplně stejně jako předáváš instanci typu A tak můžeš předat instanci typu Thread.

 
Nahoru Odpovědět 30.1.2014 17:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.