Laden...

Forenbeiträge von Pico1184 Ingesamt 223 Beiträge

08.03.2021 - 17:12 Uhr

Hallo,

ich baue mir aktuell für einen OpenFileDialog einen dynamischen Filter string über eine switch Anweisung.
Der Filter ist ja folgendermaßen aufgebaut: Text files (.txt)|.txt|All files (.)|.

Ich bekomme eine List<string> args mit z.B. *.xml und *.txt

Nun, die Lösung finde ich semi optimal da ich mit der switch Anweisung ja aktuell wie im Beispiel an 5 Einträge gebunden bin und weil es so auch sehr unschön aussieht.

Habe aktuell aber keine Idee wie ich das anders lösen kann.

Habt ihr weitere Anregungen?


 switch (args.Count)
            {
                case 1:
                    dialog.Filter = $@"({args[0]})|{args[0]}";
                    break;
                case 2:
                    dialog.Filter = $@"({args[0]};{args[1]})|{args[0]};{args[1]}";
                    break;
                case 3:
                    dialog.Filter = $@"({args[0]};{args[1]};{args[2]})|{args[0]};{args[1]};{args[2]}";
                    break;
                case 4:
                    dialog.Filter = $@"({args[0]};{args[1]};{args[2]};{args[3]})|{args[0]};{args[1]};{args[2]};{args[3]}";
                    break;
                case 5:
                    dialog.Filter = $@"({args[0]};{args[1]};{args[2]};{args[3]};{args[4]})|{args[0]};{args[1]};{args[2]};{args[3]};{args[4]}";
                    break;
                default:
                    dialog.Filter = string.Empty;
                    break;
            }

Grüße

Pico

21.10.2020 - 21:25 Uhr

Habe es jetzt anders gelöst. Ich starte einfach ein zweites Window und öffne dieses dann auf dem zweiten Monitor. Danke euch dennoch für die Hilfe!

21.10.2020 - 21:21 Uhr

Kann dir CodeWithMosh sehr empfehlen.

29.09.2020 - 22:03 Uhr

Sorry auch dieser Lösungsweg verweist auf Windows Forms und weiter oben habe ich geschrieben, das es leider auch nicht mit der Process Id funktioniert, da auch hier ebenfalls ein Null handle geliefert wird.

29.09.2020 - 21:41 Uhr

Danke dir, allerdings möchte ich keine Referenz zu Windows Forms verwenden.

29.09.2020 - 21:35 Uhr

so siehts aus, ich möchte die selbe Anwendung nochmal starten und auf den zweiten Monitor schieben, so dass auf beiden Monitoren die gleiche Anwendung (allerdings in unterschiedlichen Instanzen) läuft.

29.09.2020 - 21:19 Uhr

Die Anwendung ist von uns. Das mit dem Kiosk Modus könnte ich mal checken, allerdings weiß ich nicht ob dies mein aktuelles Problem beheben würde (starten eines neuen Prozesses auf dem zweiten Monitor).

Ich habe verschiedenes probiert. Hier mal ein Auszug:


                var path = Assembly.GetExecutingAssembly().Location;

                var secondHmiProcess = new Process
                {
                    EnableRaisingEvents = true,
                    StartInfo =
                    {
                       FileName = path, 
                       Arguments = "exec=true", 
                       UseShellExecute = false
                    }
                };
                secondHmiProcess.Start();
                secondHmiProcess.WaitForInputIdle(-1);

             
                SetWindowPos(secondHmiProcess.MainWindowHandle, HWND_TOPMOST, (int)secondMonitor.Left, (int)secondMonitor.Top, (int)secondMonitor.Width, (int)secondMonitor.Height, 0);

oder


                var path = Assembly.GetExecutingAssembly().Location;

                var secondHmiProcess = new Process
                {
                    EnableRaisingEvents = true,
                    StartInfo =
                    {
                       FileName = path, 
                       Arguments = "exec=true", 
                       UseShellExecute = false
                    }
                };
                secondHmiProcess.Start();
              
                for (var i = 0; i < 50; i++)
                {
                  Thread.Sleep(100);
                  secondHmiProcess.Refresh();

                  if(secondHmiProcess.MainWindowHandle != IntPtr.Zero)
                      break;
                }

             
                SetWindowPos(secondHmiProcess.MainWindowHandle, HWND_TOPMOST, (int)secondMonitor.Left, (int)secondMonitor.Top, (int)secondMonitor.Width, (int)secondMonitor.Height, 0);


Habe auch probiert an das Handle über die ProzessId bzw. den Namen zu kommen, allerdings ist es immer Null.

Diese Anwendung soll sich auf dem zweiten Monitor nochmal selbst (als neuer Prozess) starten und hat folgende Parameter:

ResizeMode = NoRezise
ShowInTaskbar = False
WindowState = Maximized
WindowStartupLocation = CenterScreen
WindowStyle = None

Grüße

29.09.2020 - 18:44 Uhr

Hallo,

ich muss kurz etwas ausholen damit man verstehen kann um was es geht:

.net framework 4.6.1

Ich bin aktuell an einer Industrie Anlage / Maschine und habe dort einen Windows 10 Rechner mit zwei Monitoren über DVI, auf welchem eine spezielle WPF Anwendung läuft.

Die WPF Anwendung ersetzt die Standard Windows Shell, da es den Bedienern der Maschine unter keinen Umständen ermöglicht werden soll auf die Betriebssystem Ebene zu gelangen.

Soweit so gut, das passt auch alles. Nun ist es allerdings so, dass ich aus dieser Shell eine weitere WPF Anwendung starten muss (diese ist maximiert, Vollbild und ShowInTaskbar = false). Auch dies funktioniert einwandfrei über die bekannte “Process” Klasse).

Allerdings muss ich diese Anwendung automatisch auf dem zweiten Monitor öffnen.
Dazu wollte ich die “setwindowspos” Funktion aus der WinApi nutzen.

Diese erwartet allerdings ein handle auf das betroffene Fenster. Nun genau dies ist mein Problem. Ich bekomme über “Process.MainWindowHandle” immer ein Null Handle. Ich gehe davon aus, dass dies damit zu tun hat, dass die Anwendung außerhalb der taskbar (showintaskbar = false) läuft.

Habe auch schon “FindWindow” etc aus der WinApi probiert aber leider keine Chance.
Hat irgendjemand eine Idee wie ich an dieses Window Handle ran komme damit ich das Fenster auf den zweiten Monitor verschieben kann?

Viele Grüße

Pico

05.04.2017 - 21:02 Uhr

Hallo,

ich möchte einen REST Service in meiner ASP.NET MVC Anwendung verwenden und muss mich dazu entsprechend Authentifizieren. Dazu habe ich einen apiKey bekommen. Der ApiKey muss nun in den Request Header eingebunden werden.

Beispiel der Dokumentation:


curl -H "x-netscan-auth: xxxxxx" -i https://api.netscan.co/scan

Nachfolgend habe ich das versucht so umzusetzen:


var request = (HttpWebRequest)WebRequest.Create("https://api.netscan.co/user/turn");

var data = Encoding.ASCII.GetBytes(jsonString);
var apiKey = "XXXXXXXXXXXXXXXXXXXXX";
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.ContentLength = data.Length;
request.Headers.Add($"x-netscan-auth: {apiKey}", "https://api.netscan.co/scan");

using (var stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}

var response = (HttpWebResponse)request.GetResponse();

var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

Leider funktioniert das so nicht (Exception: unzulässige Zeichen im Header). Mache ich da grundlegend etwas falsch bzw, ist das die richtige Vorgehensweise oder muss ich noch etwas encodieren???

Grüße Pico

17.03.2016 - 08:46 Uhr

Ja genau das ist ein AuthorizeAtrribute Filter:


public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new AuthorizeAttribute());
            filters.Add(new HandleErrorAttribute());
            filters.Add(new RequireSecureConnectionFilter());
        }

17.03.2016 - 06:40 Uhr

Wir nutzen einen Authorization Filter somit sind alle Controller nur über eingeloggte User verwendbar bzw müssen wir bei den entsprechenden Methoden die Zugänglich sein sollen das AllowAnonymus Attribut setzen.

16.03.2016 - 21:29 Uhr

Guten Abend zusammen,

wir haben eine asp.net Mvc 5 webanwendung. Wir nutzen asp.net identity 2.
Nun muss ich einem externen Service eine HttpGet Methode bereitstellen und diesem Informationen zum aktuell angemeldeten User übermitteln. Normalerweise frag ich innerhalb der Anwendung den angemeldeten User über "User.Identity.Name" ab.

Leider bekomme ich in diesem Fall (siehe unten) immer nur einen String.empty zurück. ich denke mal das diese Get Funktion nicht auf dem richtigen Context ist bzw den Context nicht kennt.

Wie kann man das Problem lösen bzw wie komme ich an die Informationen des angemeldeten Benutzers?

Danke für eure Hilfe!


[HttpGet]
    [AllowAnonymous]
    public ActionResult GetAppIdentity()
    {
        if (HttpContext.User.Identity.Name == string.Empty || HttpContext.User.Identity.Name == null)
        {
            return Json(new { success = "false", msg = HttpStatusCode.Unauthorized }, JsonRequestBehavior.AllowGet); ;
        }

        var appUser = UserManager.FindByNameAsync(HttpContext.User.Identity.Name).Result;

        AppAuthentication oa = new AppAuthentication();
        oa.Identity = new AppIdentity();

        oa.Identity.id = appUser.Id.ToString();
        oa.Identity.name = appUser.UserName;
        oa.Identity.role = MemberDataIdentityModel.UserRole.ToString(); ;

        return Json(oa, JsonRequestBehavior.AllowGet);
    }

18.11.2015 - 22:28 Uhr

Guten Abend zusammen,

ich möchte für eine Idee eine Art Videochat / Videokonferenz mit Audiofunktionen übers Internet entwickeln.
Ähnlich wie Skype nur webbasiert und wenn irgendwie möglich mit .net Technologien.

Welche Möglichkeiten seht ihr da bzw könnt ihr mir da Technologien dazu empfehlen?
Was haltet ihr von webRTC? Gibt's allerding nix für .net?!?!?

Grüße Pico

21.01.2015 - 22:07 Uhr

Guten Abend,

Microsoft hat heute die Hololens vorgestellt Hololens - Golem

Was haltet ihr davon? Ich hoffe das Microsoft das ziemlich offen gestaltet und Entwickler Zugriff auf diese Brille haben.

Es wäre der Wahnsinn was mit dieser Brille und Augmented Reality alles Möglich wäre.
In vielen Branchen würde es so sehr Arbeit erleichtern können z.B. Architekten, komplette Baubranche, im Maschinenbau, Support von Geräten im privat und Business bereich, im Artikel steht was von NASA und ich denke da gibt's noch viel mehr dazu.

Bin begeistert! 👍

Grüße Pico

26.06.2013 - 10:20 Uhr

Danke für eure Infos,

habe jetzt ein USB IO Kit VM110N von Velleman gekauft, etwas teurer ca. 60€, funktioniert aber tadellos.

Grüße Pico

18.06.2013 - 09:43 Uhr

Müsste ein Gamepad nicht für sowas genügen

Leider reicht das nicht aus. Ich möchte auch noch über digitale Ausgänge verschiedene LEDs ansteuern, daher bräuchte ich schon ein EA Modul.

Grüße Pico

17.06.2013 - 11:22 Uhr

Hallo zusammen,

ich bin auf der Suche nach einem Digitalmodul (bsp. USB) mit 3-10 Eingängen.
Und zwar möchte ich über drei digitale Schalter Tastaturkombinationen an ein Programm senden.

Am besten mit einem SDK für C# (notfalls auch für C++).

Habe mir das so vorgestellt, dass ich über einen Window Dienst die Schnittstelle zu dem IO Modul realisiere und dann je nach betätigtem Schalter eine bestimme Tastenkombo sende. (Mir ist schon klar dass das Programm welches die Combos empfangen soll immer den Fokus haben muss.....)

Vielleicht hat von euch jemand ne Empfehlung dazu welche Hardeware eingesetzt werden könnte.

Grüße Pico

04.05.2013 - 16:50 Uhr

Kannst du eine Sample-Solution anhängen, die den Fehler reproduziert

Wie kann ich hier eine Solution hochladen. Meine hat eine Größe von ca 3MB. Kann aber hier nur max 256KB hochladen?!?!Grüße Pico

02.05.2013 - 12:03 Uhr

du schreibst oben "Dicitionarys", aber verweist auf ein "Dicitionary"-Verzeichnis. War das nur ein Tippfehler?

Sorry war nur ein Tippfehler, habs oben korrigiert!

Grüße Pico

02.05.2013 - 11:53 Uhr

Hallo zusammen,

ich komme gerade mit meinen zwei Resourcenverzeichnissen nicht klar, und zwar habe ich ein ResourceDictionary "CustomEllipse" und ein ResourceDictionary "CustomRectangle" in einem Projektunterverzeichnis "Dictionary".

Die Buildeigenschaften beider ResourceDictionarys steht auf "Resource".

Nun möchte ich diese in der App.xaml zusammenfügen.

Dazu:


   <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>                
              <ResourceDictionary Source="Dictionary/CustomEllipse.xaml"/>
                <ResourceDictionary Source="Dictionary/CustomRectangle.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

Leider bekomme ich hier aber einen Fehler "Fehler beim Suchen nach Ressourcenverzeichnis "Dictionary/CustomEllipse.xaml" und "Fehler beim Suchen nach Ressourcenverzeichnis "Dictionary/CustomRectangle.xaml".

Aber wieso? Das sollte doch alles soweit passen....steh hier irgendwie auf dem Schlauch?!?!

Dazu wird noch ein weiterer Fehler angezeigt aber mit dem kann ich leider auch gar nichts anfangen: "Inheritor of the ResourceDictionary is expected".

Hoffe mir kann jemand helfen!

Grüße Pico

11.04.2013 - 12:34 Uhr

Hallo zusammen,

ich benötige für mein Projekt ein Ellipse Control mit Zusatzfunktionalität.
Und zwar möchte ich die Ellipse/Rectangle etc. abhängig von einem bestimmten Status
animiert einfärben...rot/gelb....blinkend......

Würdet ihr da ein eigenes Ellipsen Control schreiben oder ein benutzerdefiniertes Steuerelement nehmen????

Grüße Pico

03.02.2013 - 15:59 Uhr

Kannst du mir mal ein Codebeispiel zeigen? Kann es mir noch nicht so richtig vorstellen wie du das genau machst!

Grüße Pico

01.02.2013 - 11:36 Uhr

Warum machst du dir auf dem Client nicht ein Objekt welches den Wert repräsentiert (bei mir ist das das Tag Objekt). Dieses Implementiert INotifyPropertyChanged, und du Bindest die Propertys welche sich bei bei Änderung ändern sollen, an eine Property des Tag Objekts?

Mir gefällt nicht, dass ich für jede SPS Variable eine Property brauche welche dann an mein UI Object gebunden ist. In diesem Fall müsste ich ja für jede Variable händisch eine Property anlegen.

Wir haben ja bisher HTML und jquery verwendet, dort hatte ich eine Javascript Funktion die vom Server aufgerufen wurde und über diese eine Funktion habe ich alle UI Elemente animiert, dies hat natürlich eine enorme zeitersparnis und quellcodeeinparung zur Folge.

Dies müsste doch auch mit Silverlight funktionieren?!?!?

Grüße Pico

31.01.2013 - 14:26 Uhr

ich bekomme die Daten von Server in diesem Format


private void ObjectColoring(string signalName, int signalValue, string objectId)

Also hier die ObjectId bzw. den Objektnamen meines Silverlight Objektes.
Anhand diesem string müsste ich dann auf das UI Objekt zugreifen können.......

Könnte auch die Callback Signatur ändern und zum Beispiel das ganze UI Object übergeben:


_actionHandler.AddSignalActionHandler("SPS1_01_01", ellipse1, ObjectColoring);

Nur das Problem ist das ich ja verschiedene UI Elemente habe also nicht nur ellipsen.

Wie kann ich dann auf diese Elemente über die Callback Methode zugreifen?


private void ObjectColoring(string signalName, int signalValue, Ellipse ellipse)

Grüße Pico

30.01.2013 - 19:47 Uhr

Ich denke nicht das Silverlight tot ist...aber wie gfoidl schon schrieb das ist ein anderes Thema und hat mit meiner Fragestellung nicht direkt was zu tun!

Ich habe diverse Gründe warum ich vorerst noch Silverlight nutzen möchte!

Und deswegen hoffe ich auch dass mir trotzdem noch jemand Tipps zu meinem Problem geben kann 😉

Grüße Pico

30.01.2013 - 15:38 Uhr

Hallo zusammen,

ich muss etwas ausholen um mein Problem zu schildern.

Ich entwickle nun seit über 1,5 Jahren ein Visualisierungssystem für Industrieanlagen.
Dieses System arbeitete in der Vergangenheit folgendermaßen:

Über eine WPF Öberfläche können Daten (Variablen aus SPS Steuerungen etc.) in einer SQL Datenbank verwaltet werden.

Ein WCF Dienst übernimmt die Kommunikation mit der Steuerung der Industrieanlage und frägt die vorher projektierten Variablen (Datenbank) nach ihren aktuellen Werten ab.

Ein HttpLongPoll Server veröffentlich diese Daten nach dem Publisher/Subscriber Modell an die Clients (Webseite).

Bisher waren die Clients reine Html Seiten welche über JavaScript (jQuery) Daten des Server konsumiert haben.

Nun möchte ich auf Silverlight umstellen.

Mein Problem ist hierbei nur die Oberfläche und das ViewModel so zu gestalten, dass das Model unabhängig von der Oberfläche bleibt.

Die View kann immer verschiedene Objekte enthalten. Diese Objekte sollen je nach Wert aus der Anlagensteuerung farbig animiert werden.

Dazu registriere ich die interessanten Variablen am HttpLongPoll Server und bekomme falls diese sich ändern über einen Callback aktuelle Werte zurück!


//Signale registrieren (Variablenname, zu animierendes Objekt (z.B Rectangle), callback methode
 _actionHandler.AddSignalActionHandler("SPS1_01_01", "Test1", ObjectColoring);
 _actionHandler.AddSignalActionHandler("SPS1_01_02", "Test2", ObjectColoring);
 _actionHandler.AddSignalActionHandler("SPS1_01_03", "Test3", ObjectColoring);  
 _actionHandler.RegisterSession(OnErrorEx);


//Callback
private void ObjectColoring(string signalName, int signalValue, string objectId)
{
            this.Dispatcher.BeginInvoke(() => AddLine(signalName + ": " + signalValue + " " + objectId));


            if (signalValue == 0)
            {
                Dispatcher.BeginInvoke(() =>
                {
//die UI Elementanimation muss dynamisch erfolgen
                    ellipse1.Fill = new SolidColorBrush(Colors.Gray);
                    rectangle1.Fill = new SolidColorBrush(Colors.Gray);
                    textBox1.Background = new SolidColorBrush(Colors.Gray);
                });
                return;
            }
            if((signalValue & 0x100) > 0)
            {
//die UI Elementanimation muss dynamisch erfolgen
                Dispatcher.BeginInvoke(() =>
                                           {
                                               ellipse1.Fill = new SolidColorBrush(Colors.Green);
                                               rectangle1.Fill = new SolidColorBrush(Colors.Green);
                                               textBox1.Background = new SolidColorBrush(Colors.Green);
                                           });                        
            }
          
        }

Über die Callback Methode "ObjectColoring" bekomme ich alle aktuellen Daten und den Objektnamen (objectId) des UI Elementes zurück.

Nun möchte ich dies aber dynamisch haben => also nicht statisch über
ellipse1.Fill = new SolidColorBrush(Colors.Gray);

sondern gültig für alle Objekte auf der UI.

Wie kann ich vom String objectId auf meine Controls zugreifen?
Ich kann mit dieser Lösung auch nicht vermeiden, dass mein ViewModel die UI Objekte kennen muss.

Vielleicht hat von euch jemand noch einen anderen Lösungsansatz....

Hoffe ich habe mich einigermaßen verständlich ausgedrückt. Gar nicht sooo leicht zu erklären....

Grüße Pico

30.12.2012 - 20:03 Uhr

bei der If-Abrage war das Return nicht angebracht, dies beendet die schleifen komplett...

Das ist so nicht richtig, das Return beendet hier nur die Methode durch die Schleife wird sie aber wieder aufgerufen!


lock (connectors)
{
      connectors.Add(connector);
 }

oder


var lockObject = new Object();

lock (lockObject)
{
      connectors.Add(connector);
 }

Grüße Pico

30.12.2012 - 15:47 Uhr

Bei sowas bietet sichnes doch gerade zu an alles zu kodularisieren und zu parallelisieren...

Da ich mit der TPL bisher noch nicht gearbeitet habe hatte ich mich noch nicht daran getraut.

Habe es nun aber mit einer Parallel.For Schleife probiert:


  public static IEnumerable<Connectors> BrowseConnector(string ipAdress)
        {                     
            var ipSub = ipAdress.Split('.');
            var connectors = new List<Connectors>();
            var localIpSubstring = String.Join(".", ipSub, 0, 3);          

            Parallel.For(1, 255, i =>
                {                   
                    var tempConfig = new PLCConnectionConfiguration("tempConfig" + i);
                    var tempConn = new PLCConnection(tempConfig);                                        
                    var nextIp = String.Concat(localIpSubstring, ".", Convert.ToString(i));
                                                       
                    if (!IpScanner.Ping(nextIp, 1, 500)) return;
                        tempConfig.CpuIP = nextIp;
                        Console.WriteLine("Found " + nextIp);
                        try
                        {
                            tempConn.Connect();
                            var connector = new Connectors { RemoteName = nextIp };
                            connectors.Add(connector);
                            tempConn.Disconnect();
                        }
                        catch (Exception)
                        {
                            Console.WriteLine(nextIp + " isn't a PLC");
                        }
                    }
                
                );          
            return connectors;
        }

Damit benötigt das Scannen für das ganze Segment nur noch ca. 20 sec.
Also ein enormer Unterschied.

Jetzt ist nur die Frage ob das auch alles so richtig programmiert ist oder ob es irgendwo Zugriffsprobleme geben kann???

Insbesondere stört es mich hier, dass ich bei jedem Schleifendurchgang ein neues PLCConfig Objekt und ein neues PLCConnection Objekt erstelle.

Grüße Pico

29.12.2012 - 21:06 Uhr

einen viel höheren timeout besitzt, der die Laufzeit negativ beeinträchtigt?

Da hast du schon recht! Das Connect hat einen viel höheren Timeout!
Aber ich denke auch, dass der Timeout beim Pingen zu klein ist, habe den nur mal zum testen verringert.
Timeout verringern löst also mein Problem nicht!

D.h. ich bin momentan ziemlich ratlos wie ich da die Performance verbessern kann!

  • Wenn du die BrowseConnector Methode nicht spezialisiert planst, dann verarbeite die Subnetzmaske noch. Das Segment muss nicht zwingend von 1-254 reichen.

Das könnte ich natürlich noch tun, aber in dem Netzwerk wo die Software eingesetzt wird ist die subnetzmaske immer 255.255.255.0

Aber du hast recht, so gehört das schon rein!

Grüße Pico

29.12.2012 - 15:24 Uhr

Hallo,

ich benötige für meine Software einen IP Scanner für das automatische Erkennen von Automatisierungsgeräten im Netzwerk.

Nun dachte ich, dass ich es folgendermaßen angehe:

  • IP Adresse des lokalen Rechner ermitteln
  • Schleife von 0 - 255 durchlaufen lassen
  • das 4 Oktett anpassen (0-255)
  • Ping absenden
  • auswerten
  • falls Ping erfolgreich Connect durchführen um auf mein bestimmtes Gerät zu prüfen

folgendermaßen sieht das aus:


 public IEnumerable<Connectors> BrowseConnector(string ipAdress)
        {
            var tempConfig = new PLCConnectionConfiguration("tempConfig");
            var tempConn = new PLCConnection(tempConfig);
            var ipSub = ipAdress.Split('.');
            var connectors = new List<Connectors>();

            for (var i = 0; i <= 255; i++)
            {
                ipSub[3] = Convert.ToString(i);
                var nextIp = String.Join(".", ipSub);

                if (!IpScanner.Ping(nextIp, 1, 80)) continue;
                tempConfig.CpuIP = nextIp;
                try
                {
                    tempConn.Connect();
                    var connector = new Connectors { RemoteName = nextIp };
                    connectors.Add(connector);
                    tempConn.Disconnect();
                }
                catch (Exception)
                {
                    continue;
                }
            }
            return connectors;
        }


  public static bool Ping(string host, int attempts, int timeout)
        {
            var ping = new Ping();

            for (int i = 0; i < attempts; i++)
            {
                try
                {
                    PingReply pingReply = ping.Send(host, timeout);

                   if (pingReply != null &&
                        pingReply.Status == IPStatus.Success)
                        return true;
                }
                catch
                {
                    
                }
            }
           
            return false;
        }
    }

Nun dauert dies allerdings so ca. 2,5 Minuten bis das ganze Segment durchgelaufen ist.
Das ist ja keinem zumutbar.
Habt ihr noch ne Idee wie man hier die Geschwindigkeit optimieren kann??

Grüße Pico

18.10.2012 - 20:09 Uhr

Hi,

ich nutze aus dem Stock Trader Beispiel "AutoPopulateExportedViewsBehavior" und das "ViewExportAttribute".


    [Export(typeof(AutoPopulateExportedViewsBehavior))]
    [PartCreationPolicy(CreationPolicy.NonShared)]
    public class AutoPopulateExportedViewsBehavior : RegionBehavior, IPartImportsSatisfiedNotification
    {
        protected override void OnAttach()
        {
            AddRegisteredViews();
        }

        public void OnImportsSatisfied()
        {
            AddRegisteredViews();
        }

        private void AddRegisteredViews()
        {
            if (this.Region != null)
            {
                foreach (var viewEntry in this.RegisteredViews)
                {
                    if (viewEntry.Metadata.RegionName == this.Region.Name)
                    {
                        var view = viewEntry.Value;

                        if (!this.Region.Views.Contains(view))
                        {
                            this.Region.Add(view);
                        }
                    }
                }
            }
        }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays", Justification = "MEF injected values"), ImportMany(AllowRecomposition = true)]
        public Lazy<object, IViewRegionRegistration>[] RegisteredViews { get; set; }
    }


  [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
    [MetadataAttribute]
    public sealed class ViewExportAttribute : ExportAttribute, IViewRegionRegistration
    {
        public ViewExportAttribute()
            : base(typeof(object))
        { }

        public ViewExportAttribute(string viewName)
            : base(viewName, typeof(object))
        {
            ViewName = viewName;
        }

        public string ViewName { get; set; }

        public string RegionName { get; set; }
    }

Die Assemblys sind alle mit "ConfigureAggregateCatalog" hinzugefügt!
In meinem Module ist die verwendete View mit dem ViewExportAttribute versehen:


 /// <summary>
    /// Interaktionslogik für ArticleListView.xaml
    /// </summary>    
    [ViewExport(ViewName="ArticleListView", RegionName=RegionNames.MainRegion]
    [PartCreationPolicy(CreationPolicy.NonShared)]
    public partial class ArticleListView : UserControl
    {
        public ArticleListView()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Sets the ViewModel.
        /// </summary>
        /// <remarks>
        /// This set-only property is annotated with the <see cref="ImportAttribute"/> so it is injected by MEF with
        /// the appropriate view model.
        /// </remarks>
        [Import]
        [SuppressMessage("Microsoft.Design", "CA1044:PropertiesShouldNotBeWriteOnly", Justification = "Needs to be a property to be composed by MEF")]
        ArticleListViewModel ViewModel
        {
            set
            {
                this.DataContext = value;
            }
        }

    }

Habe eigentlich gedacht, dass AutoPopulateExportedViewsBehavior diese Views mit dem ViewExportAttribute automatisch findet und in die "Region" injeziert.

Warum funzt das bei mir nicht?

Grüße Pico

17.10.2012 - 21:41 Uhr

Hallo,

ich arbeite mich momentan in PRISM 4 ein. Einiges hab ich auch schon verstanden.

Eine Sache habe ich aber noch nicht ganz verstanden. Ich habe in meiner Testsolution ein Projekt mit einer "Shell" View in welcher verschiedene Regions definiert sind, desweiteren ein "Infrastructure" Projekt in welchem verschiedene Behaviors, Commands und diverse Helper Klassen zu finden sind.
Bisher habe ich zu Testzwecken ein Modulprojekt angelegt.

Im Bootstrapper (MefBootstrapper) verwende ich folgendes:


protected override void ConfigureAggregateCatalog()
        {
            base.ConfigureAggregateCatalog();

            AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(Bootstrapper).Assembly));
            AggregateCatalog.Catalogs.Add(new   AssemblyCatalog(typeof(CalculatorCommands).Assembly));
            AggregateCatalog.Catalogs.Add(new AssemblyCatalog(typeof(CompleteArticlesModule).Assembly));
        }

Aber nun ist meine große Frage wo (in welchem Projekt bzw. an welcher Stelle) registriere man welche View zu welcher Region gehört.

Grüße Pico

17.10.2012 - 21:33 Uhr

Hallo zusammen,

ich habe ein Problem beim Kompilieren welches mir nicht klar ist woher das kommt.

Ich habe ein größeres Projekt über die Quellcodeverwaltung zuhause in mein VS2012 geladen.

Nach dem ersten Kompilierversuch bekomme ich komische Fehlermeldungen, welche auf der Arbeit nie erschienen sind.

Fehlermeldung:
Fehler 2 In die Datei "obj\Debug\XXXXXXXX.XXXXXXXX.XXXXXXXXXXXXX.XXXXX.Service.csproj.FileListAbsolute.txt" konnten keine Zeilen geschrieben werden. Der angegebene Pfad und/oder Dateiname ist zu lang. Der vollständig qualifizierte Dateiname muss kürzer als 260 Zeichen und der Pfadname kürzer als 248 Zeichen sein. XXXXXXXX.XXXXXXXX.XXXXXXXXXXXXX.XXXXX.Service

Fehlermeldung:
Warnung 1 Die Zustandsdatei "obj\Debug\XXXXXXXX.XXXXXXXX.XXXXXXXXXXXXX.XXXXX.TraceServer.csprojResolveAssemblyReference.cache" konnte nicht geschrieben werden. Der angegebene Pfad und/oder Dateiname ist zu lang. Der vollständig qualifizierte Dateiname muss kürzer als 260 Zeichen und der Pfadname kürzer als 248 Zeichen sein. XXXXXXXX.XXXXXXXX.XXXXXXXXXXXXX.XXXXX.TraceServer

Wie kann das sein, dass auf der Arbeit (Win7 + VS2012) alles klappt und zuhause (Win8 + VS2012) diese Fehler kommen????

Ich habe relativ lange Namespaces, aber trotzdem kann es doch nicht sein das es einmal geht und einmal nicht??

Grüße Pico

11.10.2012 - 16:49 Uhr

Ah ja hab das Problem gefunden, siehe Anhang...

Grüße Pico

11.10.2012 - 15:25 Uhr

Hallo,

hat von euch schon jemand Erfahrungen mit Expression Blend 4 und Visual Studio 2012 (Pro bzw. Ultimate).

Sind diese zueinander kompatibel?? Stichwort .net Framework 4.5 und die Interaktion von Expression Blend mit Visual Studio??

Gibt es dazu ein offizielles Statement von Microsoft??

Grüße Pico

10.10.2012 - 13:10 Uhr

Naja wenn Du alles lokal ablegst und die Platte abraucht sind alle lokalen Daten weg. Schlüssig, wa?

Okay ist ja so einzusehen, aber das ist ja mit allen lokal abgelegten files so. Ob das nun Excel oder Word Dateien sind.......

Bei uns würden die Dateien auf einem Netzlaufwerk in der Firma abliegen, daher kein Datenverlust...

Grüße Pico

10.10.2012 - 12:50 Uhr

In der zentralen Datenbank brauch ja nur eine entsprechende Beziehung erstellt werden und schon ist es projektbezogen gespeichert.

Okay das ist wohl wahr, dann benötigt man nur eine DB und hat auch die projektbezogenen Daten in dieser.

Ausfallsicherheit.

Meinst du damit die Nichtverfügbarkeit eines der beiden Systeme Zentrale DB und lokale Projekt DB?
Ist es nicht ziemlich unwahrscheinlich, dass ein System ausfällt??

Grüße Pico

09.10.2012 - 23:13 Uhr

verwendetes Datenbanksystem: SQL 2012 und localdb

Hallo zusammen,

Ich schreibe momentan eine Anwendung welche unsere Projektkalkulationen erleichtern soll.

Es gibt eine zentrale SQL 2012 Datenbank in welcher alle Artikel mit Hersteller und Lieferanten etc. aufgelistet sind.

Über eine Desktop Anwendung können dann einzelne Artikel ausgewählt werden und sollen dann projektbezogen abgespeichert werden.

Ich hatte mir gedacht für die Projektkalkulationen dann einfach eine localdb zu nehmen und unter dem projektnamen abzuspeichern d.h. Mein Format der einzelnen projektdateien wären dann die localdb Datenbanken.

Spricht da eurer Meinung etwas dagegen??

Grüße Pico

26.06.2012 - 20:27 Uhr

Hi zusammen,

leider habe ich ein Problem beim generieren eines T4 Text Templates aus dem edmx Designer.
Und zwar habe ich mit dem Tool EdmGen2 ein Model aus einer SQL CE 4 Datenbank generiert und dieses in VS2010 SP1 importiert.

Wenn ich die edmx über den Designer öffne und mit rechtsklick den Eintrag "Neues Codegenerierungselement hinzufügen" klicke öffnet sich ein Dialog in welchem ich den ADO.net dbContextGenerator auswählen möchte.

Ich klicke dann auf hinzufügen und bekomme nur die Fehlermeldung "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt".

Fehlt mir da eine lib??

Habe einen Verweis auf die EntityFramework.dll V4.1 hinzugefügt, nützt aber nichts.

Vielleicht hat jemand von euch ne Idee???

Grüße Pico

23.04.2012 - 18:53 Uhr

Hätte auf die schnelle gemeint:


CheckBox checkBox1 = new CheckBox();
ListView1.Controls.Add(checkBox1);

Grüße Pico

23.04.2012 - 18:35 Uhr

Eine ähnliche Frage hatte ich letztens auch gestellt.

siehe 3D Logistiksimulation: Wie ist das realisiert bzw. wie kann man sowas realisieren?

Dazu wurde auf folgenden Beitrag in den FAQ verwiesen:

[FAQ] Wie finde ich den Einstieg in die 3D-Programmierung mit C#?

Vielleicht hilft dir das weiter.

Grüße Pico

22.03.2012 - 22:14 Uhr

Hallo,

ich hätte mal ne Frage vielleicht hat von euch jemand Erfahrung oder Ideen wie folgendes in der Praxis realisiert wird.

Und zwar gibt es im Bereich Logistik Materialfluss sehr aufwendige 3D Animationen die den kompletten Materialfluss abbilden bzw. simulieren. Auf den Animationen sind Förderbänder und z.B: Paktete zu sehen welche sortiert und an bestimmte Stationen in der Anlage verteilt werden.

Diese Simulationen kann man sogar mit realen Anlagensteuerung und Materialflussrechnern koppeln und somit den ganzen Ablauf reell simulieren.

Meine Frage ist nun mit was sind diese 3D animationen realisiert welche Technologien kommen da zum Einsatz.

Wie die Kommunikation mit den Anlagensteuerung und MFR aussieht kann ich mir denken. Aber wie ist diese 3D animation so variabel erstellbar und wie kommuniziert die Grafik mit den Daten der Anlage??

Ist sowas auch mithilfe eines 3D Systems wie z.B. Blender, 3dsmax oder ähnliches und einer .net C# Schnittstelle möglich??

Dieses Thema interessiert mich brennend! Vielleicht hat jemand ne Ahnung davon.

Grüße Pico

28.02.2012 - 10:31 Uhr

Hallo zusammen,

ich habe eine Excel Datei in der Namen und email Addressen aufgelistet sind.

Nun möchte ich irgendwie das an alle in der Excel Datei aufgelisteten Namen, eine email mit automatischer Betreffzeilenänderung und Anredetext versendet wird.

z.B.

Betreff: Werbemail an Herr X

Sehr geehrter Herr X,

Kennt da jemand was fertiges oder muss man das komplett selbst erstellen??

Eigentlich müssten sowas ja einige Firmen schon benutzen, da ja nicht immer eine einzelne Person davor sitzt und das alles per Hand eintippt???

Hat jemand von euch Vorschläge bzw. eine Idee??

Grüße Pico

25.02.2012 - 22:11 Uhr

Stimmen deine Namespaces noch?

13.02.2012 - 16:50 Uhr

Hallo zusammen,

ich bin gerade an der Konzeption einer Access Datenbank. Ich möchte eine Artikelverwaltung aufsetzen. Und zwar soll es möglich sein Artikel in einer Tabelle "Articel" anzulegen.

Diese Artikel sollen aber auch gruppiert werden können. Dazu verwende ich eine Tabelle "ArticelGroup".

Mein Problem ist nun dass ich einem Artikel immer nur eine Gruppe zuweisen kann. Ich möchte aber einen Artikel auch verschiedenen Gruppen zuweisen. Wie kann ich das erreichen?

Grüße Pico

03.09.2011 - 16:49 Uhr

nicht so sehr an deiner Vorgeschichte

ich denke schon, dass meine Vorgeschichte nicht ganz zu vernachlässigen ist!Da mir im Gegnsatz zu jemand der Abi (Mathe LK) gemacht hat, vielleicht doch einige Grundlagen fehlen und in der DH doch mehr praxisbezug herrscht als in der Uni.Ich würde nach meinem Studium sehr gerne meine elektrotechnische Erfahrung mit der Informatik verknüpfen und im Bereich der industriellen Software arbeiten!
In deinem verlinkten Artikel sind die Meinungen sehr unterschiedlich im Bezug auf Mathematik! Aber nichts destotrotz, egal wo man später arbeitet, musst du in der Uni Mathe drauf haben um bestehen zu können, und genau daran zweifle ich im Moment!

03.09.2011 - 00:24 Uhr

Hallo zusammen,

ich möchte im Oktober mein Informatik Studium beginnen. Nun habe ich zwei Zusagen bekommen und muss mich in den nächsten Tagen entscheiden!

Das erste ist ein Studium an der DH (früher BA) bei welchem ich einen Partnerbetrieb habe und abwechselnd an der Hochschule und bei der Arbeit bin (reine Dienstleistungssoftware).

Das andere ist ein Studium an der Uni (KIT Karlsruhe).

Kurz zu meiner Vorgeschichte:

  • Ausbildung Mechatroniker
  • Techniker Elektrotechnik mit Schnitt 2,0
  • 3 Jahre Erfahrung in der Softwareentwicklung unter C# und .net
  • normale Mathematikkentnisse Schnitt 2,0

Was würdet ihr empfehlen? Hätte am KIT vielleicht mehr Projekte in die technische Richtung, da dies meinem älteren Berufsfeld entspricht würde mir das zusagen!

DH Studium wäre komplett was anderes (reine Dienstleistungssoftware für Privatnutzer)!

Hoffe jemand hat nen Tipp für mich, stecke irgendwie in ner Zwickmühle auch weil ich denke das die Uni schon noch mal ein Stück höhere Anforderungen erwartet!

Grüße Pico

30.06.2011 - 12:05 Uhr

Hallo an alle,

ich wollte mal ein ganz großes Dankeschön an das ganze Forum aussprechen. Ich hab heute das Ergebnis meiner Abschlussarbeit bekommen und das ganze wurde mit einer glatten "sehr gut" bewertet!

Dies hab ich auch ganz besonders diesem Forum zu verdanken. Bei einigen Problemen konnten mir doch sehr viele qualifizierte Antworten zu meinen Problemen sehr gut weiterhelfen.

Bitte macht weiter so, dies ist eins von den qualitativ besten Foren über C# und .net!

Grüße Pico

27.06.2011 - 16:43 Uhr

Falls du die entsprechende .net Framework Version verwendest wär dies auch über einen WCF Dienst lösbar.

Hier kannst du dir mal ein Beispiel ansehen: Create WCF Service unmanaged C++

Grüße Pico

12.06.2011 - 13:57 Uhr

Ist es möglich das irgendwie zu simulieren....vielleicht gibts da irgendwie verschiedene Möglichkeiten!

Es muss doch irgendwie möglich sein play_single_sound() aufzurufen, so dass diese mp3 dann auch wirklich abgespielt wird????