Laden...

Forenbeiträge von Section31 Ingesamt 64 Beiträge

14.02.2009 - 21:12 Uhr

Hallo Michael,

wie wäre es, wenn du statt der Liste eine Queue verwendest? Oder spräche etwas dagegen? (MSDN: Queue-Klasse)

Hier gibt es eine entsprechende Synchronized-Methode (MSDN: Queue.Synchronized-Methode)

Grüße
Maik

13.01.2009 - 12:15 Uhr

Hallo Christel,

vielleicht hilft dir der Link weiter http://helpware.net/htmlhelp/hh_info.htm#HHUPD13

Grüße,
Maik

07.01.2009 - 11:10 Uhr

Jetzt wo du es sagst 😁

Ich finde es aber eher etwas ungewohnt auf ein Label doppelt zu klicken, zumindest aus meiner Sicht ist sowas nicht intuitiv, aber das kann ja jeder sehen wie er will.

Grüße

07.01.2009 - 10:54 Uhr

Hallo m0rius,

ich hätte da auch noch einen Verbesserungsvorschlag, und zwar sollte die Anzeige der Nullstellen, Extrema und Wendepunkte irgendwie scrollbar oder in einer Liste sein. In deinem Beispiel 0,005x5 - 0,2x3 + x fehlt nämlich bei der Anzeige der Extrema der letzte Tiefpunkt.

Grüße

07.01.2009 - 10:31 Uhr

Hallo Froggie,

schau dir mal Doxygen in Verbindung mit Graphviz an. Ist zwar vornehmlich für die Erstellung von Quelltextdokumentation gedacht, aber man kann sich auch bei entsprechender Konfiguration auch anzeigen lassen, welche Funktionen von einer Methode aufgerufen werden bzw. durch welche Funktionen die aktuelle Methode aufgerufen wird.

Grüße

28.12.2008 - 20:14 Uhr

Hallo,

also einrücken geschieht ja wie gewohnt mit [Tab] (entweder halt die aktuelle Zeile oder alle markierten). Das ganze wieder zurück geht mit [Shift] + [Tab]. Ansonsten schau doch einfach mal im Menü-Punkt "Edit" -> "Advanced", dort findest du eigentlich alles zum Formatieren.

Grüße

09.12.2008 - 09:01 Uhr

Hi Bitty,

ich denke mal, dein Problem löst eher ein Mutex (http://msdn.microsoft.com/de-de/library/system.threading.mutex_methods.aspx)

Diesen setzt du einfach vor jedem Aufruf von TuWasWichtiges mit WaitOne und nach dem Aufruf der Funktion gibst du ihn wieder mit ReleaseMutex frei.

Vorteil: WaitOne blockiert solange, bis der Mutex wieder frei ist und du kannst bei deinem manuellen Aufruf die While-Schleife weg lassen.

Das ganze würde dann wie folgt aussehen:

        private Mutex anhalter = new Mutex();

        private void FunctionThread()
        {
            while (!Ende)
            {
                //Warten bis Mutex nicht mehr blockiert ist
                anhalter.WaitOne();

                TuWasWichtiges();
                anhalter .ReleaseMutex();
            }
        }

        public void Eingriff()
        {
            //Warten bis Mutex nicht mehr blockiert ist
            anhalter.WaitOne();

            TuWasWichtiges();
            anhalter .ReleaseMutex();

        }
08.12.2008 - 16:15 Uhr

Hi,

zumindest für dein letztes Problem, wie du feststellen kannst, ob eine Datei von dir bereits gesichert wurde oder nicht, böte sich das Archiv-Attribut einer jeden Datei an. Wenn du dieses für jede Datei löscht, die du gesichert hast, kannst du dieses bei einem erneuten Lauf prüfen, ob sich dieses geändert hat. Dieses Attribut sollte vom System eigentlich immer dann gesetzt werden, wenn sich etwas an der Datei ändert. Damit würdest du dir die Generierung irgendwelcher Checksummen sparen.

Problematisch wäre diese Vorgehensweise nur dann, wenn durch ein anderes Programm oder so, dieses Archiv-Attribut ebenfalls geändert wird.

Grüße

05.12.2008 - 11:23 Uhr

Hi,

das Stichwort hier lautet "Events" und [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke)

Grüße

03.12.2008 - 13:47 Uhr

Hallo,

unter http://sourceforge.net/projects/iec16022sharp/ gibt es vielleicht eine freie Alternative für DataMatrix Barcode. Ob und wie gut die ist weis ich aber nicht, da ich sie persönlich noch nicht verwendet habe.

Grüße

29.10.2008 - 12:41 Uhr

Hi,

schau mal hier Mit importierter C++ DLL eine C#-Funktion aufrufen? vielleicht löst ja das dein Problem.

Grüße

28.10.2008 - 13:04 Uhr

Hi,

zwar nicht von mir, aber vielleicht in dem Zusammenhang recht nützlich Industrial Controls

Grüße

29.09.2008 - 10:30 Uhr

Hallo,

ist eigentlich gar nicht so schwer.

Zuerst einen Delegaten anlegen:


[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void tCallbackFkt( /* Hier evtl. Übergabeparameter */);

Eine passende Subscriber-Funktion im C++-Code (Beispiel weiter unten) bereit stellen und wie folgt einbinden:


[DllImport(/*entsprechende DLL*/)]
private static extern void opSubscribeCallback(tCallbackFkt fpCallbackfunktion);

Nun nur noch in der DLL die passende Funktion registrieren.


tCallbackFkt CanSendCallback = new tCallbackFkt(/* Aufzurufende Funktion */);
opSubscribeCallback(CanSendCallback);

In der DLL könnte der Subscriber dann etwa wie folgt aussehen:


// Funktionspointer
void (* fpCallbackFunktion)(/* Übergabeparameter */);

// Nun nur noch dem Funktionspointer in der DLL die entsprechende Funktion aus dem C#-Quelltext übergeben
void opSubscribeCallback(void (* fpCallback)( /* Übergabeparameter */))
{
    fpCallbackFunktion= fpCallback;
}

// Aufgerufen wird dann ganz einfach
void opCallbackCaller()
{
    fpCallbackFunktion( /* Übergabeparameter*/ );
}

Grüße