Laden...

Forenbeiträge von IamTheBug Ingesamt 401 Beiträge

17.04.2006 - 21:42 Uhr

damit arbeite ich doch 😉

17.04.2006 - 21:34 Uhr

also es ist so:

bei geändert am datum der datei schlägt er die sekunde drauf.
beim erstellt datum läuft alles richtig.
und beim letzter zugriff datum vermurgst er es vollkommen. da schreibt er immer 31.12.2005 um 23 uhr auf die datei

17.04.2006 - 21:28 Uhr

danke.

funktioniert. wieso ich das einfach addieren kann ist mir jetzt unklar 😉
habe da sonstwas probiert. mit AddTicks usw.

das einzigste was er ein wenig falsch macht sind die sekunden. da schlägt er 1 drauf

edit: und wenn ich ein TimeSpan(0,0,1) davon vorher subtrahiere (also eine sekunde) dann macht er ne sukunde zu wenig. ist doch wieder seltsam 😁

17.04.2006 - 21:02 Uhr

hey

also mein Problem ist folgendes:

Ich habe 2 Datetimepicker (oder wie die heissen).
den ersten habe ich auf "nur ansicht Datum" und drop down gelassen und den anderen auf "nur zeit" mit numeric up down pfeilen an der seite gestellt.

nun will ich daraus eine neue DateTime generieren. Also sprich aus der ersten kommt das Datum aus der zweiten die Zeit und diese dann eienr Datei als LastWriteTime oder so zuweisen. Doch irgendwie bekomme ich es nicht hin. Stehe da total aufm schlauch. Wenn ich nur den ersten DAteTimePicker zuweise stimmt zwar das datum aber dann wird auch die zeit die in dem datetimepicker ist übernommen (man sieht sie nur bei der auwahl nicht). Mit dem Picker für die zeit dsa selbe. Zeit ok aber Datum vermugst.
Wie mache ich das nun?
habe auch schon mit DateTimePicker.Value.Date und .Time. Hour usw gearbeitet doch der erwünschte Erfolg bleibt mal wieder aus 😁

17.04.2006 - 20:56 Uhr

so mal als pseudocode eine kleine hilfe, wie es genau geht müsste ich auch nachgucken und ausprobieren.


//die liste zum halten der textbox
System.Collection.List<TextBox> textBoxList = new System.Collection.List<TextBox>();
//neue textbox erstellen
TextBox neueTextBox = new TextBox;
//textbox in liste speichern (den zeiger da drauf)
textBoxListe.Add(neueTextBox);
//textbox auf form legen
Form.Controls.Add(neueTextBox);

zuvor kannst und soltlst du ja noch eigenschaften wie breite/höhe und location der textbox bestimmen

ansprechen kannst du die boxen dann durch textBoxList[index]

so in der art müsste es gehen, hoffen das hilft

edit: schon wieder zu langsam 😁

edit2: unendlich viel ist ne ganze menge. Glaube nicht das dies klappt 😁

16.04.2006 - 21:48 Uhr

ach danke
man war ich mal wieder beschränkt 😉

habe doch vor lauter verzweiflung gar nicht gesehen das man für jeden node beim erstellen das selected image angeben kann.
ich dachte das ist eine allgemeine eigenschaft des treeviews das dann für alle nodes gilt.

danke also. es funzt und war wirklich einfach zu löse 🙂

16.04.2006 - 19:32 Uhr

ja stimmt.
ich kann gar keine sicherheitsebene für eine variable in einer methode angeben. was ja wie ich schon sagte sinnvoll ist bzw nicht nötig da sie ja eh nur in der methode gültig ist.

und ich bin auch immer für explizietes angeben. das erleichtert das lesen

16.04.2006 - 19:11 Uhr

kommt drauf an wo du sie angibst

in einer methode sind die standardmässig private (ist ja klar sind ja nur in der methode gültig) und in einer klasse direkt sind sie public...

korregiert mich falls das nicht stimmt 😉

16.04.2006 - 15:31 Uhr

hey

mit eigenen controls programmieren bzw schon vorhandene controls anpassen habe ich mich noch nicht wirklich beschäftigt. Deswegen frage ich mal hier wie es geht, ev lässt sich das ja leicht und schnell umsetzen.
Ich habe ein Listview. indem kann man ja windowsmässig mit shift und pfeiltasten usw markieren. wenn ich nun aber die pfeiltaste drücke verschwindet die markierung.
Ich will also markierte elemente dauerhaft markiert lassen, auch wenn der user noch im listview "navigiert".
wie macht man das am besten?

15.04.2006 - 18:48 Uhr

entweder die variable immer mit durchreichen, also in der hauptform merken und beim dialogaufruf bzw konstruktor aufruf des dialoges mit übergeben

oder eine klasse für alle dialoge so zugänglich machen das alle immer auf die selbe instanz und somit auf die selbe variable zugreifen.
also anstatt in jedem dialog diese klasse mit dem konstruktor neu zu instanzieren, lieber (falls schon vorhanden) eine schonmals erstellte instanz abrufen.

edit: mist mal wieder zu langsam getippt 😁

15.04.2006 - 18:02 Uhr

hey

ich habe folgendes problem. Ich habe ein TreeView dem ich eine zur laufzeit generierte imageliste hinzufüge. Also das gernerieren und hinzufügen passiert zur laufzeit.
Dann habe ich überall wie es sein soll schöne feine bilder vor den elementen.
Aber irgendwie benutzt er als "Selected Icon" also das icon für die selectierten elemente immer das icon "0" aus der liste. Aber ich habe das nie angegeben das er dies tun soll. Sprich: wenn ich ein element selectiere hat es dann immer das falsche icon. wie kann ich das beheben?
er soll einfach gar kein image für selectierte elemente benutzen. sondern das zugeordnete beibehalten.

13.04.2006 - 13:23 Uhr

und wenn du bei der form als startoption "minimized" angibst?
dann müsste er doch so starten, wie als wenn du es durch den button klick minimirt hast oder?
und dann sollte es ja gehen wenn es durch das klicken geht.

13.04.2006 - 12:50 Uhr

ja suspend wäre die für mich jetzt eifnachste methode
aber wie schon gesagt im framework 2.0 wird das als veraltet gekennzeichnet und er compiliert das projekt auch erst gar nicht

12.04.2006 - 23:13 Uhr

ich hab bei meinem listview auch das problem
das hinzufügen einzelner zeilen (bei besonders vielen) dauert extrem lange manchmal...
wäre über eine lösung auch sehr dankbar

12.04.2006 - 18:36 Uhr

schön

bin ich nicht der einzigste mit solch einer frage... und da wird auch gleich wunderbar auf meinen angefangenen thread verwiesen 😉
sehr schön G

12.04.2006 - 18:29 Uhr

ich habe es jetzt nicht ausprobiert aber ne listview ist wenn du sie auf details stellst so aufgebaut:

item subitem1 subitem2 subitem3
item subitem1 subitem2 subitem3
item subitem1 subitem2 subitem3
item subitem1 subitem2 subitem3

und den text von item kannst du ändern aber den von subitem 1 bis 3 nicht.
habs nciht ausprobiert aber das viel hier in dem thread so

und was da drin steht, egal in welchem item kannst du ansprechen und abrufen und in die DB zurückschreiben

aber ich glaube beim zusammenspiel mit einer DB macht sich datagrid eh besser

12.04.2006 - 16:31 Uhr

ja klar muss ich dafür sorgen das das was ich im listview editiere mit auf die DB zurück geschrieben wird.

@toefe: es sit so gemeint das man die subitems nicht editieren kann. aber in die DB zurückschreiben kannst du die doch. dafür bist du ja dann veranwtwortlich. also wenn das (main)item editiert wird dann schreibst du das in die db zurück und die subitems kannst du natürlich auch ansprechen und zurückschreiben

12.04.2006 - 15:04 Uhr

es gibt doch aber die eigenschaft "LabelEdit" und dann kann man auf after label edit reagieren

würde das nicht gehen?

12.04.2006 - 11:57 Uhr

eine möglichkeit wäre (diese läss die klasse an sich aber so gross wie sie ist) unter VS2005 die klasse als "partial" zu deklarieren.
da kannst du dann eine datei der klasse für die delagten machen, einen anderen für die forms und wieder eine für die eigenen methoden...

so kannst du halt deinen code auseinander "reissen" und auf mehrere dateien aufteilen die du dann schön so nennen kansnt wie du es willst 😉

aber die klasse an sich bleibt dann noch so gross und umfangreich

12.04.2006 - 11:44 Uhr

aso ich glaub ich hab jetzt verstanden was er meint.

und hast du noch einen satz zu dem pauseproblem auf lager? 🙂

12.04.2006 - 11:15 Uhr

naja normalerweise hast du 365 tage im jahr (schaltjahr 366)
das macht 52 wochen genau... also genaugenommen 52 *7 = 364... tage plus ein überbleibsel tag 😉

was auch der grund dafür ist das ein tag wie der 1.3 im jahre X ein montag ist, im X+1 jahr dann ein dienstag wäre... ausser es funkt ein schaltjahr dazwischen

aber ich lese gerade deine frage nochmal....
ja es sind rechnerisch immer 52 VOLLE wochen und dann entweder ein überbleibsel tag oder 2

edit: dieser beitrag kam ohne SoruceCode und wertvolle Informationen aus 👅 👅 👅

12.04.2006 - 11:09 Uhr

naja ich habe ja einen try catch block der mit die threadabortexception anbfängt und das wars....

und egal an welcher stelle der code ist (er ist hauptsächlich beim langen kalkulieren einer checksumme) da kann er einfach unterbrochen werden. das juckt den restlichen code in anbetracht auf stabilität nicht. und dann greift der der catch block und die noch eventuell offenen dateien werden gechlossen.
sprich in den catch (finally) block springt er nur wenn abgebrochen wird, normalerweise rutscht er da ja gar nicht rein so das auch da innerhalb nicht abgebrochen werden kann der thread.
ISt das ungefähr das worauf du angespielt hast? oder habsch das falsch verstanden?

12.04.2006 - 10:46 Uhr

aha

vielen dank nochmal für die Erklärung. 👍 👍 👍

Und nochmal kurz was anderes was so in das Thema gehört. Wie pausiere ich den threads? Ich dachte ja erst das geht ganz einfach mit Thread.Suspend aber unter 2.0 wird das nicht mehr unterstützt. Es steht da ich soll auf thread kommunikation wie mutex und lock usw zurückgreifen...
dabei will ich doch nur auf einen button klicken. dieser soll den thread anhalten und beim erneuten klicken starten.
Ich dachte eigentlich das ginge so einfach wie. Thread.suspend() und dann thread.start() oder wie auch immer der "mach bitte weiter befehl" heisst 😁

12.04.2006 - 01:04 Uhr

ah gut
das mit der exception ist nicht schlecht... werde ich wohl nutzen.
gleich mal testen...

vielen dank

11.04.2006 - 23:48 Uhr

hey, wie breche ich einen thread richtig ab?
ich habe eine form für die fortschrittsanzeige und im hintergrund läuft ein thread der eine datei geöffnet hat und nun dadrauf eine zeitintensive operation ausführt.
auf der form habe ich auch einen abbrechen button, der ein thread.abort() auslöst.

das erste unschöne ist das der thread zwar abgebrochen wird aber laut doku ja nur "in der regel sofort". aber eigentlich wird der thread bei mir immer gleich abgebrochen. das problem ist nur das dann der filestream zu der datei noch auf ist und ich dann diese datei nicht löschen kann usw, da sie noch blockiert wird. gibt es so etwas wie einen thread finally block der noch ausgeführt wird, wenn der thread abgebrochen wird?
der thread arbeitet auch nicht in einer schleife so das ich bei jedem schleifendruchlauf eine bool variable abfragen kann und somit aus der schleife ausbrechen kann.
es ist halt einfach eine zeitintensieve funktion die das framework zu verfügung stellt wo ich dann nichts machen kann ausser abwarten.

10.04.2006 - 00:44 Uhr

sorry
aber bevor sich jetzt hier jeder immer weiter entschuldigt weil er angst hat den adneren auf die Füsse zu treten, lieber mal lesen was schon gepostet und geklärt wurde.
ich bin mir über die ufnktionsweise und das umbennen des Papierkorbes bewusst und kenne den link. Wie du nämlich sehen kannst habe ich den link zu dem Artikel selber schon gepostet und dazu gesagt das es wahrscheinlich nur so gehen kann

jetzt nochmal sorry und danke an alle 😁

muss ich mir eben was überlegen wie es geht

10.04.2006 - 00:34 Uhr

ich habe ja nicht gesagt das es da unbedingt rein kommt.
wenn du es deaktiviert hast muss das natürlich geprüft werden.
naja egal. werd ich mir was überlegen müssen
habe halt in dem programm einmal die möglichkeit für kopieren und löschen explorer methoden zunehmen oder programminterne funktionen zu nutzen
deshalb wollte ich den unterschied

09.04.2006 - 22:52 Uhr

ich habe doch aber oben schon 2 mal geschrieben das es auf diese art und weise schon geht und ich es aber auch über eine eigens implementierte methode machen will.... 🙁

09.04.2006 - 16:20 Uhr

progressbar drauf hauen und einfach den style auf marque stellen

09.04.2006 - 15:06 Uhr

also bei mir geht es trotzdem nicht
ausserdem habe ich nur auf der C:\ Platte die NTFS ist dieses Verzeichnis. also die SID
bei der D die Fat ist, ist dies nicht so.

edit: habe folgendes

System.IO.FileInfo file = new System.IO.FileInfo(textBox1.Text);
if (file.Exists)
{
file.MoveTo(@"C:\RECYCLER\S-1-5-21-1844237615-2139871995-839522115-1003&quot; + file.Name);
}

edit: und ein einfaches bewege kann auch nicht funktionieren. die datei befindet sich zwar im papierkorbordner aber sie wird nicht im papierkorb angezeigt da sie in der info/info2 datei nicht eingetragen wurde und das ist ja das wichtige

09.04.2006 - 15:03 Uhr

wie verschiebst du die?
mit der explorer funktion? wenn ich es mit ausschneiden/einfügen mache dann merkt der explorer das in den papierkorb bewege und führt ein löschen aus.

oder hast du das selber mit moveto programmiert?

09.04.2006 - 14:49 Uhr

gut das ist erstmal ein ansatz...
aber durch ein einfaches verschieben ist es eben nicht getan... (glaube ich, muss es probieren)

da es ja so ist (wie ich es oben schon beschrieben habe), das das file umbenannt wird und dann in die info datei die im papierkorb liegt eingetragen wird

edit: also mit einem einfachen file.MoveTo() geht es nicht. die datei befindet sich dann zwar in dem ordner vom papierkorb aber der papierkorb erkennt die datei nicht. Liegt an dieser info datei.

edit2: ich glaube das hilft mir ein wenig weiter. werde wohl datei per MoveTo() reinschieben und dann die info2 datei anpassen
http://support.microsoft.com/default.aspx?scid=kb;de;136517

09.04.2006 - 14:16 Uhr

ja das habe ich schon. das funktioniert super. habe ich ja oben geschrieben...
ich wollte halt auch etwas eigenes implementierten. mit eigener fortschrittsanzeige und ein paar anderen optionen usw.

09.04.2006 - 11:26 Uhr

@svenson: verstehe ich nicht, damit mach ich doch den Papierkorb leer. Ich will doch aber reinlöschen 😁

@quiestdator: damit nutze ich doch wieder diese windows API die mir das standard Windows löschen fenster bringt oder?

08.04.2006 - 23:23 Uhr

jo das ist mir klar, hilft mir aber nicht weiter
da einfach eine datei dort reinbewegen nix nützt
da ist nämlich noch so eine info datei dabei die sämtliche informationen beinhaltet (wie die datei vorher hiess udn wo sie lag)
die datei wird auch umbenannt wenn sie im papierkorb liegt.
und solange ich nicht weiss wie ich die datei zu bearbeiten habe kann ich es auch nicht manuell reinschieben, leider

08.04.2006 - 23:02 Uhr

hey

wie kann ich eine Datei in den Papierkorb löschen?
Ich möchte das ganze aber nicht über APIs von windows machen. Das löschen per explorer API klappt super.
Ich habe aber auch für das Löschen meine eigene Methode geschrieben. Doch der von mir dort verwendete file.delete() Befehl löscht ja direkt. Wie bekomme ich das aber in den Papierkorb?

06.04.2006 - 17:07 Uhr

ahja danke ich versuch das mal umzusetzen.
Hattest auch recht da war ich wieder etwas voreilich mit dem Posten. Hätte ich doch mal auch selber die Hilfe wälzen sollen. Doch die hat mich schon fot enttäuscht. Nicht wegen dem Inhalt, sondern weil ich erolglos suchte 😁

danke

06.04.2006 - 16:39 Uhr

so habe mien problem gefunden...

der code war eigentlich OK und es war schon alles richtig. Nur eins ist nicht so ganz ok und zwar folgendes:

in meiner mainform rufe ich folgendes auf:


CopyStatus copyStatus = new CopyStatus();
copyStatus.doCopy(sourceFiles,destination);

Die klasse copyStatus (ist die form mit dem fortschrittsbalken)


internal void doCopy(List<DateiInfo> SourceFiles, string Destination)
{   //create the class which will copy
     copyLocal = new CCopyLocal(SourceFiles, Destination);
     //create a new thread for copying
     newThread = new Thread(new System.Threading.ThreadStart(copyLocal.copyFiles));
  //start the thread
   newThread.Start();
   this.ShowDialog();    //show the dialog
}

und da liegt das Problem. Der Thread wird gestartet und danach das StatusFenster des Kopiervorgangs angezeigt. Wenn nun aber der thread so schnell ist bzw schon soweit ist das er per invoke eine funktion aus copystatus (also dem dialog) aufrufen will klappt dies nicht. Da es noch nicht vollständig angezeigt wird.
invoke kann ja erst funktionieren wenn das fenster vollkommen da ist und fensterhandle existiert (zumindest habe ich das so gelesen g)
und der dialog wird wohl noch nciht ganz dasein deswegen bricht er einfach ab.

wie löse ich das problem?
this.showdialog();
newThread.Start(); kann ich ja auch nicht schreiben
da er das dialogfenster anzeigt und dann dort ja "hängen bleibt";
und erst nachm beenden den thread startet.

ansonsten war der code eigentlich ok was thread kommunikation angeht und synchrone invoke aufrufe.

04.04.2006 - 11:47 Uhr

habe das auch wieder rausgenommen das es eh sinnlos war 🙂

04.04.2006 - 11:40 Uhr

Original von herbivore
Hallo IamTheBug,

was du versuchst ist - ich meine das nicht böse - Synchronisation für Arme.

nein ich nehme dir das nicht übel, denn ich sehe das genauso und bin deshalb auch unzufrieden mit diesen schlechten, billig lösungsversuchen.

Ich dachte z.b. ich könnte einen Thread einfach mit suspend anhalten. aber das gibts ja im framework 2.0 nicht mehr. zumindest erhalte ich immer die Meldung das es veraltet sei und ich andere sachen nutzen soll.
Habe mir sachen wie Mutex, Monitor und lock angeguckt. Aber fand irgendwie keinen Bezug zu meinem Problem. Bzw ist mir nicht ein/aufgefallen wie mich das weiter bringen soll

Gut ich suche das Forum mal nach einer Ampel ab 😉

bis hierhin aber schonmal vielen Dank das du dir immer noch die Zeit nimmst in dem thread zu antworten und mich nicht aufgibst 😉

04.04.2006 - 11:07 Uhr

ich habe jetzt mein Prog noch ein wenig erweitert. Und zwar so:

in dem arbeitenden Thread habe ich folgende funktion eingefugt:


        private void waitForDialogs()
        {
            System.Threading.Thread.Sleep(100);
            if (wakeUp)
            {
                wakeUp = false;
                return;
            }
            else waitForDialogs();
        }

den aufruf tätige ich nun so:


 System.Windows.Forms.DialogResult dResult =    System.Windows.Forms.DialogResult)gui.Invoke(new MethodeAskForCopyOption(gui.askForCopyOption), new Object[] { sourceFile.FullName, destinationFile });
waitForDialogs();
            switch (dResult)
            {
//mache hier ein paar switch sachen
             }

und dann in der mainform wo der invoke aufruf hinführt (also in dem anderen thread) sieht es nun so aus:


internal DialogResult askForCopyOption(string sourceFile, string destinationFile)
        {
AskForCopyOption askForCopyOption = new AskForCopyOption(sourceFile, destinationFile);
askForCopyOption.ShowDialog();
copyLocal.WakeUp = true;
return askForCopyOption.DialogResult;
        }

also der arbeitende thread setzt sich dann einfach durch eine schleife immer wieder in einene kurzen schlafenden zustand.
dies kann doch aber nicht DIE Lösung sein. ALso es scheint zu gehen aber ich finde das sehr unprofessionell. Habe mir auch weitere befehle zur thread kommunikation angeguckt aber keinen gefunden der mir so weiter hilft oder gewusst wie ich den nun anwenden sollte.

es scheint auch wirklich nur eine art zeitliches problem zu sein und ist kein Problem das ich eine art "falschen" code geschrieben habe.

edit: kommando zurück - scheint auch nicht wirklich zu gehen 🙁

03.04.2006 - 19:23 Uhr

ja, und das kann zeitliche probleme machen?
also ich habe echt das gefühl das wenn es alles zu schnell geht er abschmiert
ist das system etwas ausgelastet dann haut es hin...

aber this.ShowDialog() zeigt doch die form mit dem progressbar an.
und askForConfirmation.ShowDialog() wird ja auch von dieser form aufgerufen so das diese über dem liegt. wenn man das ganze ohne threads macht funktioniert das ja auch einwandfrei...

es sit ja nciht so das es generell nicht geht. nur mal gehts und mal schmierts ohne jeckliche meldung ab

03.04.2006 - 18:44 Uhr

also ich weiss nicht was ich anders schreiben soll. Ich versuche jetzt mal die hauptquelltextzeilen die wesentlich sind hier wiederzugeben

CopyStatus-Class (Die Klasse mit der Form wo der Fortschrittsbalken usw drauf ist)


internal void doCopy(string source, string destination)
{ //die klasse die das kopieren in einem thread tätigt
CCopyLocal copyLocal = new CCopyLocal(source, destination, this);

//create a new thread for copying
System.Threading.Thread newThread = new System.Threading.Thread(new System.Threading.ThreadStart(copyLocal.copyFiles));
newThread.Start();  //start the thread
this.ShowDialog();    //show the dialog
}

edit: das this was an den konstruktor übergeben wird sitzt dann in der klasse auf der variable "gui" wie unten dann zu sehen ist.
das habe ich so gemacht damit ich irgendwie im programm dann eine neue copy-status-klasse erzeugen kann die nicht-modal angezeigt werden soll und somit die copy klasse dann mit dem neuen gui zusammen arbeitet.
somit habe ich das wechseln vom zusammenarbeiten des modalen dialogs und der copy klasse mit dem nicht modalen gelöst.
dies macht auch keine probz und geht gut

hier die CCopyLocal Klasse


internal void copyFiles()
{
//mache hier ein paar dinge, wie attribute holen usw, also das kopieren vorbereiten
//wenn die zu kopierende datei im ziel schon existiert
if (deleteReadOnlyOrHiddenSystem(destFile)
   destFile.Delete();

//hier eine methode um eine neue form zu generieren auf der nur die buttons, "ja" "nein" "nein alle" "übespringen" usw liegen
//methode wird dann unten in anderer classe per invoke aufgerufen.

internal DialogResult askForConfirmation()
{
AskForConfirmation askForConfirmation = new AskForConfirmation();
askForConfirmation.ShowDialog(); //ja so bekomme ich den confirmation dialog //modal über den kopierstatus dialog

//gib den dialog result zurück damit der thread danach seine entscheidung für das //kopieren treffen kann
return askForConfirmation.DialogResult;
}

private bool deleteReadOnlyOrHiddenSystem(FileInfo file)
        {
            #region check ReadOnly
            if (file.IsReadOnly) //ist das file überhaupt read only???
            { //wenn ja dann rufe per invoke eine form aus die nachfragt wie verfahre    
                //wird, per invoke deshalb damit alles in der hauptform modal wirken
                 //kann
               //und whle dann per switch den dialog result

              switch ((System.Windows.Forms.DialogResult)gui.Invoke(new MethodeAskForConfirmation(gui.askForConfirmation)))
                    {
                        case System.Windows.Forms.DialogResult.OK:  //overwrite or delete
                            {
                                //setzte eine belanglose variable
                                return true;
                            }
                        case System.Windows.Forms.DialogResult.Ignore:  //skip
                            return false;

                        case System.Windows.Forms.DialogResult.Cancel:  //cancel
                            {
                                //cancel thread here
                                return false;
                            }
                        default: return false;
                    }
                }
            }
            #endregion

            return true; //wenn nicht read only dann delete...
        }

//der delegate dazu
protected delegate System.Windows.Forms.DialogResult MethodeAskForConfirmation();

so ich glaube das war alles notwendige...
und naja dieser askforconfirmation dialog kommt einfach nicht
davor geht das prog schwuppdiwupp einfach aus...

in dem askforconfirmation dialog passiert eigentlich nix
ist nur ne zusammen gezogene form wi buttons drauf liegen und ein dialog result zurück kommt.

03.04.2006 - 16:42 Uhr

hm sowas habe ich mir schon gedacht das es daran liegt
also am thread und zeitlichen verhalten...

ich verstehe nur nicht warum es auftritt. Ich dachte wenn ich etwas mit invoke aufrufe also eine Methode dann läuft diese synchron ab sprich der thread wartet dann bis diese abgearbeitet wurde und kann dann den rückgabewert verarbeiten.

naja ich muss mir heute abend wenn ich dann mehr zeit habe nochmal alles ganz genau angucken.
aber für vorschläge wonach ich gucken und achten sollte wären ich offen 😉

03.04.2006 - 16:13 Uhr

jetzt muss ich nochmal was loswerden

ein weiteres problem ist aufgetreten 🙁

es funktioniert alles.
aus der form rufe ich den thread auf. wenn nötig ruft der thread per invok, funktionen auf die dann wieder eine form modal anzeigt. der thread wartet auf den rückgabewert der neuen formen. soweit so gut.
in der entiwcklungsumgebung VC express geht alles super und wunderbar.
wenn das programm aber "standalone" also einfach so läuft dann schmiert es an der stelle wo das neue dialog fenster kommen soll ab. D.h. genau es schliesst sich einfach. Kein Fehler, keine Meldung, kein Nichts.
Da habe ich dann einfach an gewisse stellen ein messagebox Aufruf generiert um zu sehen bis wohin das prog läuft bevor es sich beendet. Doch jetzt kommt noch etwas Merkwürdiges. Wenn ich eine msg box anzeigen lasse dann läuft das prog ganz normal. Ohne Probleme. Keine ahnung ob das daran liegt das dadurch das programm/der thread nochmals angehalten wird und dann irgendetwas abläuft was ich nicht weiss.

Ich verstehe halt nicht wieso das prog in der entwickungsumgebung normal läuft und ohne sich einfach beendet. Wenn das öfters passiert kann ich ja nicht in ruhe weiter proggen, dann kann mir das ja so ziemlich überall passieren. da muss ich ja auch immer noch checken ob das prog auch im "standalone modus" ordentlich läuft.

03.04.2006 - 16:05 Uhr

eigene form machen 😉
ist auch am einfachsten und schnellsten

02.04.2006 - 23:42 Uhr

aso danke
dann weiss ich jetzt besser bescheid 😉

da kann ich mein neu erworbenes wissen ja jetzt besser einsetzen g

02.04.2006 - 21:57 Uhr

so ich denke ich habe mein problem gelöst

wollte aber nur nochmal für mein Verständniss nachfragen warum es so funktioniert wie ich es gemacht habe 😉

Es ist so das ich eine hauptForm habe. Diese ruft den arbeitenden thread auf. Falls der Thread auf ein "problem" stösst soll er ja eine andere Form anzeigen wo nachgefragt wird wie verfahren werden soll. Dies habe ich jetzt per hauptForm.Invoke(rufeAndereFormZumNachfragenAuf) gelöst.

jetzt wird also aus der hauptForm durch das invoke die funktion rufeAndereFormZumNachfragenAuf() aufgerufen. Diese zeigt seine Form modal an.
Gut das ist alles so wie es sein soll. Warum arbeitet der Thread dann nicht weiter? ich dachte der arbeitsthread und der thread der hauptForm laufen "parallel". wieso wartet der arbeitsthread bis hauptFormThread die modele form wieder auflöst?

ach ja noch eins. ich arbeite mit einem rückgabewert. liegt es daran? und wäre das ohne rückgabewert nicht so?

02.04.2006 - 20:17 Uhr

jo hackers ist einfach nur kult 😉

matrix ist auch gut, allerdings flachte die triologie nach dem ersten teil stark ab.
Johnny Mnemonic ist auch nicht schlecht...

23 ist auch fein finde ich.
Hm mehr fällt mir grade nicht ein.

02.04.2006 - 14:32 Uhr

ja ich werde wohl diesen teil des programms anders strukturieren müssen
also wo ich was und wie aufrufe
muss ich mal gucken...

muss das dann nur managen das der thread auch wartet bis das dialogfeld bearbeitet wurde und der dann die ergebnisse des dialogfeldes bekommt