Laden...

Forenbeiträge von M-209 Ingesamt 32 Beiträge

08.11.2013 - 12:05 Uhr

Das wonach du suchst kann denke ich mit System.Reflection bewerkstelligt werden

How can I get all constants of a type by reflection?

Danach kannst du das Array nach dem Namen deiner Konstante durchsuchen und ausgeben.

MFG

08.11.2013 - 09:41 Uhr

Hallo,

sry, hab ich übersehen.

Naja es liegt eher nicht daran das ich das volatile bool nicht verwenden will, sondern nicht kann. Da ich ansonsten in jeder Methode die ich in asynchron aufrufen will eine Schleife machen muss.

Wie meinst du das mit auslagern in einen Prozess? Das ich einen eigenen Prozess erstelle?

08.11.2013 - 09:31 Uhr

Danke für die schnelle Antwort.

Hab das zwar auch schon gefunden, kann es aber nicht verwenden, da wir mit .NET 2.0 arbeiten...

08.11.2013 - 09:27 Uhr

Hallo Leute,

ich habe folgendes Problem:

Wir haben bei unserem Projekt, als Basis für asynchrone Methoden die ausgeführt werden eine kleine Klasse gebastelt. Sie bekommt als Argument eine Methode die in einem eigenen Thread ausgeführt werden sollte. Jetzt stellt sich für mich die Frage ob es eine Möglichkeit gibt diesen Thread von außen zu beenden. Es sollten dabei folgende Punkte beachtet werden.

  • Wenn möglich kein BackgroundWorker
  • Die Methode mit BOOL und Schleife kann nicht verwendet werden, da sie nicht in jede Methode eingebaut werden sollte, da ja alle beliebigen Funktionen übergeben werden können.

Um das ganze noch ein bisschen durchsichtiger zu gestalten hier noch ein Codeausschnitt:


              this._executeThread = new Thread(delegate() 
            {
                this.method();      // Anonyme Methode die ausgeführt werden sollte. 
            });
            this._executeThread.Start();

Ich hoffe meine Auführungen waren ungefähr verständlich. Ansonst bitte nochmal nachfragen. Ich wäre über Hilfe sehr froh.

MFG
Stefan

15.01.2013 - 19:07 Uhr

Also ich erkläre nochmal mein Problem genauer:

Ich arbeite an einer Multiuser Applikation die ähnlich wie der Explorer ( Dateisystem) arbeiten sollte, aber nur als DB im Hintergrund. Jetzt habe ich mir die Frage gestellt wie kann ich am vernünftigsten herausbekommen ob neue Datensätze in der Tabelle sind bzw. ob welche geändert worden sind. Anfangs wollte ich es mit SqlDependencys lösen, aber da ich davon ausgegangen bin, dass es für eine Multiuser Applikation nicht geeignet ist, habe ich diesen Lösungsansatz wieder verworfen.

Mein Lösungsansatz den ich jetzt verwende ist, dass ich für jeden Datensatz der geändert oder hinzugefügt wird, wird ein Eintrag in einer eigenen Tabelle erstellt. Diese Tabelle speichert dann welcher Datensatz geändert oder hinzugefügt wird. Ich überprüfe nun diese Tabelle ob neue Datensätze sind und falls nicht wird das Laden einfach beendet.

Ich weiß nicht ob diese Benachrichtigungen das richtige für mein Vorhaben sind, da ich ja in ziemlich kurzen Abständen bzw. ziemlich oft update.

Ich hoffe es wird jetzt klarer.

lg M-209

15.01.2013 - 17:17 Uhr

@xxx

Genau das hab ich in Bezug auf die SqlDependency gemeint.

Zu dem Link: ich werd mir das mal durchsehen und auf jedenfall ausprobieren!

15.01.2013 - 12:07 Uhr

Aber wird dabei nicht für jeden User der zur DB verbindet eine eigene Queue erstellt?

15.01.2013 - 11:20 Uhr

@T-Virus:

Diese Möglichkeit hätte ich auch schon bedacht, aber es ist leider nicht möglich, da ja viele User gleichzeitig darauf zugreifen und wenn ein Flag vom einen Gesetzt wird dann bekommt ein anderer gar nicht mehr mit das er neu ist.

Zum Thema DataReader: Ich hatte es zuvor mit einem DataReader realisiert und da benötigte ich für die Funktion ca. 0.04 sek also doppelt so lange

Lg M-209

15.01.2013 - 07:23 Uhr

@FZelle:

Da es eine applikation ist, mit der später viele User gleichzeitig arbeiten, würde es, sofern ich es richtig verstanden habe für jeden User eine Queue erstellen und das erscheint mir sehr aufwendig.

Falls ich falsch liege bitte ich darum mich eines besseren zu belehren.

@demodriver235 ich kann deinen Vorschlag leider erst am Abend prüfen, aber ich werde es auf jeden Fall ausprobieren und dann eine Rückmeldung geben

14.01.2013 - 21:57 Uhr

Hi michlG,

danke erstmal für die Antwort.

Das mit den SQL Dependency hab ich schon probiert, ist aber für meine Anwendung nicht umsetzbar, da es zu viele Ressourcen verschlingt. Die Logik zum updaten ist schon implementiert, dass ist kein Problem. Ich möchte das ganze nur noch ein wenig beschleunigen.

PS: ID ist ein Primary Key

lg M-209

14.01.2013 - 21:43 Uhr

Liebe Community,

ich arbeite momentan an einem Projekt bei dem ich überprüfen muss ob neue Daten
in der Tabelle gespeichert werden. Hierzu habe ich einen ID und alle ID´s ( Auto - Increment Wert) die höher sind als der gespeicherte ID sind neue Datensätze. Jetzt möchte ich aber zu erst überprüfen ob überhaupt ein höherer ID vorhanden ist. Wenn nicht sollte die Funktion abgebrochen werden. Momentan dauert diese Funktion wenn keine neuen ID´s vorhanden sind 0,02 Sekunde.

Momentan lese ich die Daten mittels ExecuteScalar().

Das Select Statement sieht ca. so aus

SELECT COUNT(*) FROM tbl_Tabelle WHERE ID > LastID

Danach überprüfe ich ob ExecuteScalar einen Wert über 0 zurückgibt, wenn nicht, wird die Methode beendet.

Gibt es eine Möglichkeit, dass ich das ganze noch beschleunige?

Ich hoffe ihr versteht ungefähr was mein Problem ist und könnt mir evtl. helfen.

14.07.2012 - 11:03 Uhr

Liebe MyCSharp Community,

ich hätte eine Frage. Gibt es ein Opensourceprojekt (C#) wo der Explorer nachgebaut wurde bzw. wenn möglich sogar mit der Möglichkeit eine Datenbank ( vorzugsweise SQL Server 2008 ) zu verwenden?

Es sollten im Prinzip die grundlegenden Operationen wie im Explorer funktionieren nur sollten die Dokumente bzw. Userdaten nicht in einer AD bzw. in einem Filesystem abgespeichert werden sondern in einer Datenbank.

Falls jemand so ein Projekt kennt bitte ich darum, dass der- oder diejenige mir einen Hinweis gibt.

Mit Freundlichen Grüßen,
M-209

18.04.2012 - 13:11 Uhr

Ja ich hab es ja jetzt noch nicht mit dem Log4Net gemacht. Ich wollte nur mal wissen ob das gut ist oder nicht bzw. welche Erfahrungen damit gemacht wurden.

Also aufgebaut ist die Applikation mit WebForms.

Also offline funktioniert es mit dem Server.MapPath("~/"), schon mal ein großes Dankeschön dafür.

Online kann ich leider erst später testen aber ich werde euch informieren ob es funktioniert hat.

18.04.2012 - 12:45 Uhr

Es ist eine ASP.NET Applikation

Ja das hatte ich auch gedacht, aber wie kann ich darauf zugreifen? Bzw. welchen Pfad sollte ich angeben?

18.04.2012 - 12:02 Uhr

Das war mir klar das der mein Problem nicht löst. Nur allgemein ob der gut ist oder nicht.

Also mein Problem besteht darin, dass wenn ich schreibend auf das Verzeichnis des Webservers zugreifen will gibt er mir einen Fehler aus das die Berechtigungen fehlen. Also wenn ich eine Datei erstellen will bekomme ich eine UnauthorizedAccesException.

Ist das genau genug?

18.04.2012 - 11:41 Uhr

Hallo Leute,

ich hoffe das ist der richtige Bereich. Wir arbeiten gerade an einem Projekt und dazu wollen wir einen Logger der wenn ein Fehler auftritt in eine Datei schreibt die am Webserver liegt. Jetzt besteht aber für uns immer das Problem, dass die Fehlermeldung kommt, dass wir nicht die nötige Berechtigung haben.

Wir haben diese Sache online und offline ( Visual Studio ) getestet.

Wie bzw. wo kann man das in diesen beiden Fällen umstellen oder gibt es einen Work Around?

Ich wäre für Hilfe sehr dankbar.

Mit Freundlichen Grüßen,

Stefan Kert.

PS: Was haltet ihr von diesem Logger? http://logging.apache.org/log4j/

18.03.2012 - 15:55 Uhr

Kann es denn sein, dass das Problem auch beim Webhoster liegt?

17.03.2012 - 08:56 Uhr

Ok,

und wie kann ich das realisieren?

Ist mein Quellcode eigentlich so richtig oder kann der gar nicht funktionieren?

MFG

16.03.2012 - 08:44 Uhr

Wie kann ich dann für das versenden von Mails über SMTP authentifizieren?

15.03.2012 - 21:05 Uhr

Ja.

Also ich habe jetzt mal nachgesehen und die Authentifizierung die ich bei meinem oben angegeben Quellcode verwende ist im Prinzip eine Authentifizierung über POP3. Könnte das ein Problem werden?

15.03.2012 - 20:37 Uhr

Ok.

Also ist die Authentifizierung wie ich sie mache nicht richtig oder?

Denn mit diesen Daten funktioniert es das ich über das Outlook schicke etc.

@Anakin Skywalker
Diesen Link den du gepostet hast. Bei diesem Beispiel schreibt er mir ins Warning, dass der SmtpClient veraltet ist. Mit was würdest du empfehlen das ich es mache, so wie ich es beschrieben habe, oder mit dem SmtpClient?

15.03.2012 - 19:23 Uhr

Hallo erstmal,

also ich habe seit einigen Tagen ein sehr nerviges Problem. Ich habe bei einem Webhoster (www.world4you.com) ein Hostingpaket mit E-Mailadressen bzw. SMTP Server.

Jetzt probiere ich mit meiner C# Applikation eine E-Mail zu versenden, aber es will nicht funktionieren.

Hier einmal der Codeausschnitt:



        public JobClosed SendSyncMail()
        {
            this.smtpClient = new SmtpClient(Configuration.MailServer, Configuration.MailPort);
            this.smtpClient.Credentials = new NetworkCredential(Configuration.MailUser, Configuration.MailPassword);
            
            try {
                this.smtpClient.Send(this);
                return new JobSuccess();
			}
			catch (Exception ex) {
                return new JobFailed(ex, ExceptionStrings.SendMailException + ":" + To[0], "Mail::SendSyncMail()", true);		  
			}
        }


Ich bekomme immer wie bereits im Titel beschrieben folgende Fehlermeldung:


System.Net.Mail.SmtpFailedRecipientException: Postfach nicht verfügbar. Die Serverantwort war: relay not permitted
   bei System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
   bei System.Net.Mail.SmtpClient.Send(MailMessage message)
   bei Common.Mail.Mail.SendSyncMail()

So . Jetzt werden sich sicher gleich einige denken, die Login Daten sind falsch, aber das hab ich mir zuerst auch gedacht und es dann überprüft:

Wenn ich eine E-Mail an eine lokale Adresse schicke, sprich an eine die ich unter meiner Domäne angemeldet habe, kann diese verschickt werden und kommt auch an. Wenn ich aber jetzt an eine externe E-Mail Adresse etwas schicken will kommt obiger Fehler. Ich habe mich schon mit dem Support von world4you in Verbindung gesetzt, aber da bekomme ich nur die Rückmeldung, dass meine Authentifizeriung nicht stimmt.

Kann es sein, dass auch wenn die Authentifizierung nicht stimmt Mails an lokale Adressen verschickt werden können und wenn ja wisst ihr eine Lösung für dieses Problem?

Ich würde mich sehr über eine baldige Lösung freuen, da ich schon sehr lange an diesem Problem Sitze.

lg Stefan

Ps: Ich habe es mit Outlook und mit dem Webmail probiert und das Mailen funktioniert.

02.11.2011 - 12:27 Uhr

Danke schonmal für die schnelle Antwort.

Ich möchte von meinem Laptop aus auf den Exchange zugreifen der auf einer virtuellen Maschine (Windows Server 2008 R2) installiert ist. Muss ich dort noch irgendetwas konfigurieren das ich mit einer Applikation die auf dem Laptop ausgeführt wird darauf zugreifen will.

01.11.2011 - 14:37 Uhr

Hallo Leute,

tut mir leid falls es schon ein Thema dazu gibt aber ich denke das sich noch weitere Fragen auftun werden und diese werde ich dann gleich hier stellen.

Aber erstmal die Fragen die ich momentan habe:
1.Welches SDK ist zur Ansteuerung von Microsoft Exchange 2010 am besten wenn ich zum Beispiel auch Kalenderdaten auslesen möchte 1.Gibt es irgentwo gute Tutorials zur Ansteuerung ?

Ich würde mich über eine baldige Beantwortung der Fragen sehr freuen.

lg M-209

05.08.2011 - 11:08 Uhr

ok,

da ich die Montiore ja nur in den StandBy Modus setzen will wenn nichts mehr angezeigt wird mache ich es jetzt einfach so das sie nur in StandBy gehen wenn auf allen nichts mehr angezeigt wird.

Danke trotzdem für eure Bemühungen.

05.08.2011 - 08:57 Uhr

ok danke für die Antworten.

@winSharp93

ja das habe ich auch schon ausprobiert aber das Problem ist das es auch sehr viele Monitore sein können und dann wird es sehr umständlich mit dem ausschalten, wieder einschalten etc.

@moson

Das mit dem SendMessage habe ich jetzt momentan eh schon eingebaut aber wie du bereits gesagt hast kann man damit leider nur beide Monitore ein-/ausschalten.

Deinen zweiten Tipp werde ich leider nicht einbauen können weil das Programm unter anderem auch auf XP oder Vista laufen sollte..

Gibt es sonst noch irgendwelche Vorschläge bzw. Lösungsansätze

04.08.2011 - 14:37 Uhr

Hallo Leute,

also ich habe das Problem das ich wenn ich den Monitor in den StandBy Modus schalte immer beide Montiore in den StandBy geschalten werden. Gibt es irgendeine Möglichkeit nur einen der beiden Bildschirme in den StandByModus bzw. auszuschalten und den anderen anzulassen?..

Falls jemand einen Lösungsvorschlag hätte der mit C++ zu lösen wäre würde ich mich darüber auch sehr freuen..

mfg M-209

21.07.2011 - 15:18 Uhr

Ja es hat so funktioniert, aber ich habe jetzt eine andere besserere Lösung gefunden.

Danke trotzdem .

20.07.2011 - 18:05 Uhr

Sehr schön, danke schonmal für diese Hilfe, ich habs zwar schon vorher mal so probiert aber das hat irgentwie nicht funktioniert...

Naja im Prinzip sollte das Multibinding dafür da sein das es an einen Converter übertragen werden kann der mehrere Parameter entgegebn nimmt, in meinem Fall eine Liste, einen ID, und welcher String ausgegeben werden sollte.

Hat vielleicht noch jemand eine Idee ob es möglich ist den Timer direkt in XAMl zu schreiben?

20.07.2011 - 17:19 Uhr

Also sollte ich am besten eine eigene Klasse meachen die von diesem Interface erbt`?

20.07.2011 - 17:07 Uhr

Soweit ich das mit "INotifyPropertyChanged" bis jetzt mitbekommen habe brauche ich das nur wenn ich bei der GUI etwas verändere und bei der GUI wird keine Usereingabe getätigt.

Fals ich falsch liege bitte korrigiere mich.

20.07.2011 - 15:49 Uhr

Hallo,

ich habe jetzt ein bisschen im Forum gesucht aber habe keinen Thread gefunden wo meine Problemsituation bereits beschrieben bzw. gelöst wurde, deshalb eröffne ich jetzt einen neuen Thread ( falls doch bereits eine Lösung existieren sollte bitte ich um Verzeihung).

Als erstes eine Allgemeine Frage:

  • Ist es möglich einen Timer zu implementieren der in der XAML Datei geschrieben wird und nicht in der C# Datei? bzw. gibt es dafür spezialle Tags?

Weiters habe ich ein Problem in meinem Quelltext wo ich einfach nicht drauf komme was ich falsch mache.
Wie ihr vielleicht in meinem Quelltext erkennen wollt würde ich gerne einen gewissen String aus einer Klasse welche in einer Liste abgespeichert ist auf das Label schreiben.

Z.B: Die Klasse Auto enthält den string Meep und den string moop, in einer Liste sind mehrer Autos gespeichert und ich würde gerne einen bestimmten string eines bestimmten autos ausgeben.

Dazu habe ich in meiner Code-Behind Datei der XAML Datei eine Variable definiert, welche ich ID genannt habe, diese wird (momentan mit einem DispatcherTimer) erhöht und es sollte eigentlich immer das nächste Listenelement automatisch auf der GUI angezeigt werden. Leider geht das aber nicht und es wird immer nur das Listenelement angezeigt welches aus erstes ausgewählt wurde.

Normal müsste es doch gehen wenn man den ID ändert das sich dann der Text auf dem Label auch ändert oder liege ich da falsch?.

Hier einmal meine XAML Datei:

<Window 
  x:Class="Anzeigetafel.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:Anzeigetafel"
  Title="Anzeigetafel Test 2" Height="369" Width="487">
    <Window.Resources>
        <local:ListSelector x:Key="listSelect" />
    </Window.Resources>
    <Grid x:Name="dataGrid">
        <Label Height="31"  Name="lbl_Gemeinde" Margin="0,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="Auto">
            <MultiBinding Converter="{StaticResource listSelect}" Mode="OneWay" UpdateSourceTrigger="PropertyChanged">
                <Binding Path="EinsatzListe"/>
                <Binding Path="ID"/>
                <Binding Path="Ort"/>
            </MultiBinding>
        </Label>
    </Grid>
</Window>

und die Code Behind Datei:



namespace Anzeigetafel
{
    public partial class Window1 : System.Windows.Window
    {
        public int ID { get; set; }
        public int timespan = 2; // Sekunden zwischen Wechsel der "Aufträge"
        public List<Einsatz> EinsatzListe { set; get; }
        public DispatcherTimer myDispatcherTimer = new DispatcherTimer();
        public Window1()
        {
            InitializeComponent();
            EinsatzListe = new List<Einsatz>(){
                new Einsatz("ORt1","Industriegebäude","1","Strasse","5500","Werkzeughalle","Brand","1","2","3","4"),
                new Einsatz("Ort2","Gelände","1234","Erfunden","1234","Haus","Brand","1","2","3","4"),

            };
            this.ID = 0;
            this.dataGrid.DataContext = this;
            startTimer();
        }
        private void startTimer()
        {
            myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, this.timespan , 0);
            myDispatcherTimer.Tick += new EventHandler(functiontocall);
            myDispatcherTimer.Start();
        }

        public void functiontocall(object o, EventArgs sender)
        {
            if (this.ID < this.EinsatzListe.Count()-1)
            {
                this.ID++;
            }
            else
            {
                this.ID = 0;
            }
            myDispatcherTimer.Stop();
            myDispatcherTimer.Tick -= new EventHandler(functiontocall);
            startTimer();
        }          
    }
}

Falls irgendetwas unverständlich, oder schlecht formuliert bzw. geschrieben habe bitte ich euch darum es mir zu schreiben..
Ansonsten würde ich mich über einen Lösungsvorschlag sehr freuen da ich schon einige Stunden an diesem Problem sitze..

Mfg m-209