Laden...
Avatar #avatar-2352.gif
esven myCSharp.de - Member
Student Ruhrpott Dabei seit 05.11.2006 40 Beiträge
Benutzerbeschreibung

Forenbeiträge von esven Ingesamt 40 Beiträge

17.12.2012 - 22:24 Uhr

Die Objekte, die ich anzeigen möchte sind auch immer Objekte desselben DatenTyps aber zB die "Parameter"-Objekte haben eine Liste von "Value"-Objekten. Jedes Value-Objekte soll in einer eigenen Spalte dargestellt werden. Es können aber je nach Konfiguration unterschiedlich viele Value-Objekte in den Parametern existieren.

So benötige ich unterschiedlich viele Spalten mit verschiedenen Beschriftungen, je nachdem welche Konfiguration der Nutzer lädt.

13.12.2012 - 23:03 Uhr

Hallo myCsharp-Gemeinde,

Ich probiere mich gerade an meiner ersten MVVM-Applikation.
Bisher klappt das auch ganz gut. Jetzt habe ich jedoch noch ein Problem, zu dem ich bisher keinen Ansatz finde.

Ich benutze das WPF DataGrid und muss eine dynamische Anzahl an Spalten darstellen. Das können mal 5 sein und mal 20. Für die Anzahl der Spalten und deren Header- usw. sind die Daten natürlich im ViewModel vorhanden.

Falls ihr versteht, was ich meine. Würde ich mich über ein paar Ideen wie Ihr das MVVM-Konform lösen würdet?!

Meine einzige Idee bisher wäre, die Columns-Eigenschaft an das ViewModel zu binden und dann die Columns im ViewModel zu erstellen. (Inkl. Binding-Eigenschaft usw.)
Würdet ihr das auch so machen oder stellt das nicht einen Bruch im MVVM-Pattern dar, da z.B. die DataGridTextColumn ja eigentlich ein View-Element darstellt, oder?

Vielen Dank und Grüße bereits im Voraus!
Sven

28.02.2011 - 17:37 Uhr

Also ich sammel auch immer 100 ms die Daten in ein array und füge dass dann der BindingList hinzu.

Somit aktualisiere ich eigentlich auch nur alle 100 ms.

28.02.2011 - 15:46 Uhr

Hallo Th69,

Danke für die Antwort. Leider ist es nicht möglich die Daten erst zu laden und dann zu binden, da das Programm für Livelogging verwendet werden soll.

Ich habe jetzt die BindingList anstatt der List verwendet und lösche die ältesten Einträge, sobald 5000 Einträge angezeigt werden. Das hat schon geholfen. Hauptproblem ist wahrscheinlich, dass ca. alle 300 us neue Daten zum Anzeigen hinzukommen...

Gruß

28.02.2011 - 01:21 Uhr

Hallo,

Ich verwende in meiner WPF-Anwendung das DataGrid-Control.

Die ItemsSource-Property derselben wurde auf eine List<T> gesetzt. Nachdem ich eine Datei geladen habe, wurden ca. 26.000 Werte in die Liste geschrieben, nach einem Items.Refresh() auf das DataGrid werden auch welche angezeigt. Allerdings genau immer nur jedes zweite Element.
Wo sind die anderen?

Außerdem habe ich noch das Problem, wenn man im Grid herumscrollt zeigt es irgendwann in den Zeilen immer dieselben Werte an. Also als wenn 1.000 mal das gleiche Objekt geladen wurde.

Was kann das sein?

Als kleine Info hier noch die Deklaration des Grids:


<DataGrid Margin="2" Background="WhiteSmoke" Foreground="Black" Name="CanFrameGrid" BorderThickness="0" CanUserReorderColumns="False" CanUserResizeColumns="True" CanUserSortColumns="False" CanUserResizeRows="False" GridLinesVisibility="Horizontal" LoadingRow="CanFrameGrid_LoadingRow" IsReadOnly="True">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="DarkBlue" />
<Setter Property="Foreground" Value="WhiteSmoke" />
<Setter Property="MinWidth" Value="50" />
<Setter Property="MinHeight" Value="19" />
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Time" MinWidth="75" Binding="{Binding TimeString}" />
<DataGridTextColumn Header="No" MinWidth="75" Binding="{Binding SeqIdString}" />
<DataGridTextColumn Header="ID" MinWidth="75" Binding="{Binding IdentifierString}"/>
<DataGridTextColumn Header="Chan" MinWidth="50" Binding="{Binding ChannelString}"/>
<DataGridTextColumn Header="Length" MinWidth="50" Binding="{Binding DlcString}"/>
<DataGridTextColumn Header="Direction" MinWidth="75" Binding="{Binding DirectionString}"/>
<DataGridTextColumn Header="Data" Binding="{Binding DataString}"/>
</DataGrid.Columns>
</DataGrid>

Bzw. auch das, was im Code passiert:


dataGridSource = new List<CanFrame>;();
CanFrameGrid.ItemsSource = dataGridSource;
CanFrameGrid.AutoGenerateColumns = false;

[...]
while (...)
{
dataGridSource.Add([...]);
CanFrameGrid.Items.Refresh();
}

MfG
Sven

03.02.2011 - 20:03 Uhr

Mmh, da hatte ich wohl ein Brett vorm Kopf...

Danke!

03.02.2011 - 19:57 Uhr

Es ist mir schon fast peinlich diese Frage hier stellen zu müssen aber ich weiß, dass es geht.

Und zwar möchte ich den Dateinamen der .exe oder .dll Datei nach dem Erstellen mit Visual Studio ändern. Natürlich automatisch und nicht manuell.

Ich hab es erst vor ein paar Wochen bei einem meiner Projekte gemacht aber leider finde ich diese Option nicht wieder und google gibt mir da dummerweise auf meine Suchanfragen auch keine ordentlichen Antworten.

Ich hoffe, ihr könnt mir helfen.

Vielen Dank schonmal dafür!

24.11.2010 - 14:20 Uhr

Hallo,

Ich benutze in meinen Zeichnungen derzeit das FormattedText Element, schön daran ist auch, dass dieses Text automatisch beschneiden und an eine bestimmte Größe anpassen kann.
Jedoch beschneidet der immer rechts und zeigt dementsprechend nur die ersten paar Zeichen an, ich würde aber gerne nur die letzten paar Zeichen anzeigen und davor abschneiden.

Gibt es dafür auch ein Feature vom FormattedText oder eine ganz andere Möglichkeit?

Gesucht habe ich schon aber leider nichts passendes gefunden.
Ansonsten, gibt es die Möglichkeit herauszufinden, wie viele Zeichen in die aktuelle Textbreite passen, dann könnte man das ja manuell machen.

Als Alternative würde ich mir ein FormattedText-Objekt erstellen und nach jedem hinzufügen eines Zeichens die Textbreite überprüfen müssen.

Gruß,
esven

21.11.2010 - 16:35 Uhr

Ich hab das Problem behoben, das Problem war, dass ich nicht in die Mitte des Path-Objekts gezeichnet habe. Ich habe jetzt für die Berechnung der Kreisringausschnitte den Mittelpunkt von 0,0 auf jeweils die Hälfte der Größe des Path-Objektes verschoben und dann ging es.

Es würde mich aber dennoch interessieren, warum es mal geht und mal nicht. Falls jemand darauf eine Antwort hat, immer her damit.

21.11.2010 - 13:29 Uhr

Im Anhang nochmal ein interessantes Vorkommnis, er berechnet die Koordinaten korrekt, der erste und der letzte Pfad wird ordentlich gezeichnet, vom zweiten wird nur die Mitte gezeichnet...

Die Koordinaten werden korrekt errechnet und daraus die korrekte PathFigure erstellt aber sie erscheint nicht komplett auf dem Bildschirm, wenn man genau hinschaut sieht man auch, dass die beiden korrekt gezeichneten komplett mit einem schwarzen Rand umrandet sind, nur der mittige nicht komplett.

Ich verzweifel hier, woran kann das liegen?

21.11.2010 - 13:18 Uhr

Hallo,

Ich habe mir eine Klasse gebastelt, welche mir durch verschieden Parameter Kreisringausschnitte als PathFigures übergibt. Das funktioniert auch wunderbar. Jedoch zeichnet WPF den Pfad nicht zuverlässig und ich habe keine Ahnung, woran das liegt.

Diese beiden Figures werden noch wunderbar gezeichnet, alles toll.

Figures = {M0;-20 A20;20;0;0;1;10;-17,3205080756888 L30;-51,9615242270663 A60;60;0;0;0;0;-60 L0;-20}Figures = {M10;-17,3205080756888 A20;20;0;0;1;19,6961550602442;-3,47296355333861 L59,0884651807325;-10,4188906600158 A60;60;0;0;0;30;-51,9615242270663 L10;-17,3205080756888}

Merkwürdigerweise wird hier nur die erste Figure gezeichnet, die zweite erscheint gar nicht auf dem Bildschirm.

Figures = {M0;-20 A20;20;0;0;1;10,8927807003005;-16,7734113589085L32,6783421009016;-50,3202340767254A60;60;0;0;0;0;-60L0;-20} Figures = {M10,8927807003005;-16,7734113589085 A20;20;0;0;1;19,9878165403819;-0,697989934050015 L59,9634496211457;-2,09396980215004 A60;60;0;0;0;32,6783421009016;-50,3202340767254 L10,8927807003005;-16,7734113589085}

Um das ein wenig besser zu verstehen, das erste ist ja bekanntermaßen der Startpunkt (M...), dann folgt eine Clockwise Arc Figur, dann eine Linie auf die eine Counterclockwise-Arc Figur und zu allerletzt noch eine Linie zurück zum Startpunkt folgt.

Im Anhang findet ihr noch Screenshots der Figuren, es sind jeweils nur die gelben und grünen Abschnitte gemeint. Bzw. warum im zweiten Teil der grüne Abschnitt nicht gezeichnet wird obwohl die Abweichungen der einzelnen Werte nur gering sind.

Ich hoffe jemand von euch weiß einen Ratschlag.

Viele Grüße,
Sven

21.10.2010 - 14:43 Uhr

Ich glaube, wenn ich Recht überlege macht das tatsächlich am meisten Sinn...

Ist doch doof, wenn man einfach nur mal wieder viel zu kompliziert gedacht hat!

Jedes mal wieder bin ich erstaunt, wie schnell man hier kompetente Hilfe erhält, vielen Dank!

21.10.2010 - 14:26 Uhr

Erstmal vielen Dank für die Antworten, nachdem ich mir auch die Beiträge hinter den Links zu Gemüte geführt habe, habe ich mein Konzept geändert.

Ich beschränke mich damit jetzt auf 2 Threads (1 fürs GUI und 1 für die Arbeit).
Auch wenn ich's hierbei nicht vor hatte, wusste ich nicht, dass DoEvents so viele negative Auswirkungen hat.

Dennoch bin ich nicht damit glücklich nur vom WorkerThread aus die GUI ändern zu können. Ich würde gerne aus dem GUI-Thread dem Workerthread mitteilen, dass er der GUI Daten zur Erstellung einer Grafik zur Verfügung stellt. Diese müssen aufbereitet werden und dauert ggf. ein paar Sekunden.

Könnte ich mit dem Invoker auch andersrum vorgehen? Also z.B. ein Button-Klick teilt dem Thread mit, dass er bestimmte Informationen aufbereiten soll und der Worker-Thread macht wieder einen Invoke und übergibt die Daten für die Grafik oder stellt sowas einen Stilbruch dar?

21.10.2010 - 11:37 Uhr

Ich möchte insbesondere verhindern, dass die Anzeige hängt während Daten aufbereitet oder gesammelt bzw. angefordert werden.

Wie würde ich einen asynchronen Aufruf realisieren können?

21.10.2010 - 11:12 Uhr

Hallo,

Ich komme bei einem meiner Projekte nicht wirklich weiter. Ich programmiere zumindest grob nach 3 Schichten-Architektur und habe somit 3 "Module" geschrieben, bzw. bin dabei.

Diese 3 Module sollen jeweils in einem eigenen Thread laufen. Um jetzt Problemen mit Deadlocks oder ähnlichem aus dem Weg zu gehen gibt es 1 Thread, welcher als einziger die Datenhaltung bearbeiten darf. (Datenhaltung aus Hashtables bzw. Dictionaries)

Dann habe ich noch jeweils einen Thread, welcher Daten per SOAP von einem Server holt, aufbereitet und in die Datenhaltung hineinschieben soll, einen anderen, welcher Daten herausholen soll und dadurch die Anzeige generiert.

Jetzt liegt mein Problem darin, wie ich in C# dem Datenhaltungsthread aus einem der anderen Threads am Besten mitteile, dass er was an der Datenhaltung tun soll?!

Bisher war meine Idee ähnlich wie in Windows.Forms mit Invoke Methoden zu arbeiten, allerdings möchte ich vermeiden, dass der eine Thread den anderen blockiert, indem er warten muss, bis der Thread die Invoke-Methode verarbeitet hat.

Ich hoffe, jemand versteht mein Problem und sagt mir entweder, dass das totaler Quatsch ist oder jemand hat einen guten Tipp für mich.

Vielen Dank!
Sven

30.04.2010 - 12:06 Uhr

So, hier die Lösung:

Mein Problem bestand darin, dass ich 2 Assemblies (DLLs) programmiert habe und der Klick auf den Button die zweite Assembly aufgerufen habe.

Ich habe allerdings das SetSecurity nur auf das Addin selber angesetzt, leider nicht auf die zweite Assembly.

Hinzufügen einer zweiten Custom Action mit dem SetSecurity Projekt auf die zweite Assembly und alles funktioniert!!

29.04.2010 - 11:15 Uhr

Hallo,

Jetzt mach ich nochmal einen eigenen Thread für dieses Problem auf.
So langsam verzweifel ich nämlich daran.

Mit unten gezeigtem Code erstelle ich mir ein Menü in Powerpoint. Wenn ich das Ganze direkt aus Visual Studio starte, funktioniert alles. Das Click-Event wird gefeuert und alles arbeitet wie gedacht.

Sobald ich jetzt aber das Setup-Projekt erstelle und auf der gleichen Maschine das Addin installiere, startet es auch und das Menü wird angezeigt aber sobald ich den Button klicke, passiert nichts.

Woran kann das liegen? In anderen Beiträgen wird nur immer wieder gesagt, dass es am fehlenden Tag-Attribut liegt, das kann aber nicht sein, da es definiert ist.

**

[/b]
menuBar = ppApp.CommandBars.ActiveMenuBar;
newMenuBar = (Office.CommandBarPopup)menuBar.Controls.Add(Office.MsoControlType.msoControlPopup, missing, missing, missing, false);
if (menuBar != null)
{
newMenuBar.Caption = "Project Reports";
newMenuBar.Tag = menuTag; buttonOne = (Office.CommandBarButton)newMenuBar.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, 1, false);
buttonOne.Tag = "ProjectReportButtonTag";
buttonOne.Click += new Office._CommandBarButtonEvents_ClickEventHandler(buttonOne_Click);
buttonOne.Style = Office.MsoButtonStyle.msoButtonIconAndCaption;
buttonOne.Caption = "Create Project Report Tables";
buttonOne.FaceId = 159;
buttonOne.Visible = true;
newMenuBar.Visible = true;
}

28.04.2010 - 15:53 Uhr

Mittlerweile hab ich das Problem gelöst.

Mittels des SetSecurity-Projekts aus den Visual Studio 2005 Tools for Office Samples und der entspr. Vorgehensweise hat das alles funktioniert.

Jetzt hab ich aber noch ein ganz anderes Problem.
Das Addin startet mit Powerpoint und erzeugt auch wie es soll das neue Menü. Jedoch, wenn ich auf den Menüpunkt klicke, welcher ein Dialogfenster öffnen soll, passiert gar nichts.

Es kommt kein Fehler, keine Sanduhr, keine Exception, man kann weiter in Powerpoint arbeiten wie man möchte und auch wiederholt da draufklicken es passiert einfach nichts.

Wenn ich das gleiche mache wenn das Addin aus Visual Studio heraus gestartet wird, funktioniert alles wie es soll...

Hat da jemand eine Idee??

16.04.2010 - 15:23 Uhr

Also ich hab es mittlerweile hinbekommen, dass mir die Fehler angezeigt werden, hierzu müssen 2 Umgebungsvariablen gesetzt werden:

VSTO_SUPPRESSDISPLAYALERTS = 0

Bewirkt, dass aufgetretene Fehler in einem Dialog bei Start des Addins angezeigt werden.

VSTO_LOGALERTS = 1

Bewirkt, dass eine Logdatei mit mehr Informationen im Verzeichnis des Addins gespeichert wird.

Folgendes ist der Inhalt der Logdatei, hat dafür jemand eine schnelle Lösung?

Log entry added at 14:42:09:
-----------Caption----------------
Die Office-Dokumentanpassung ist nicht verfügbar.
-----------Message----------------
Ein Add-In konnte nicht gefunden bzw. nicht geladen werden.
-----------Details----------------
Die Datei oder Assembly "PowerPoint2k3ProjectReportsAddin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d6b2de19eeb3a8be" oder eine Abhängigkeit davon wurde nicht gefunden. Die Berechtigung zum Ausführen konnte nicht erteilt werden. (Ausnahme von HRESULT: 0x80131418)

************** Ausnahmetext **************
System.IO.FileLoadException: Die Datei oder Assembly "PowerPoint2k3ProjectReportsAddin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d6b2de19eeb3a8be" oder eine Abhängigkeit davon wurde nicht gefunden. Die Berechtigung zum Ausführen konnte nicht erteilt werden. (Ausnahme von HRESULT: 0x80131418)
Dateiname: "PowerPoint2k3ProjectReportsAddin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d6b2de19eeb3a8be" ---> System.Security.Policy.PolicyException: Die Berechtigung zum Ausführen wurde nicht erhalten.
bei System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission)
bei System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission)
bei Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.HandleOnlineOffline(Exception e, String basePath, String filePath)
bei Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadStartupAssembly(EntryPoint entryPoint, Dependency dependency, Dictionary`2 assembliesHash)
bei Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.ConfigureAppDomain()
bei Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadAssembliesAndConfigureAppDomain(IHostServiceProvider serviceProvider)
bei Microsoft.VisualStudio.Tools.Applications.Runtime.AppDomainManagerInternal.LoadEntryPointsHelper(IHostServiceProvider serviceProvider)

************** Geladene Assemblys ************** mscorlib Assemblyversion: 2.0.0.0 Win32-Version: 2.0.50727.3607 (GDR.050727-3600) CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

Microsoft.VisualStudio.Tools.Applications.Runtime Assemblyversion: 8.0.0.0 Win32-Version: 8.0.50727.940 CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualStudio.Tools.Applications.Runtime/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualStudio.Tools.Applications.Runtime.dll

Microsoft.Office.Tools.Common Assemblyversion: 8.0.0.0 Win32-Version: 8.0.50727.940 CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.Office.Tools.Common/8.0.0.0__b03f5f7f11d50a3a/Microsoft.Office.Tools.Common.dll

System Assemblyversion: 2.0.0.0 Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000) CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll

System.Windows.Forms Assemblyversion: 2.0.0.0 Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000) CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

Microsoft.VisualStudio.Tools.Applications.Runtime.resources Assemblyversion: 8.0.0.0 Win32-Version: 8.0.50727.42 CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualStudio.Tools.Applications.Runtime.resources/8.0.0.0_de_b03f5f7f11d50a3a/Microsoft.VisualStudio.Tools.Applications.Runtime.resources.dll

16.04.2010 - 11:29 Uhr

Hallo,

Ich habe ein Problem mit einem Powerpoint 2003 Addin, welches mit Visual Studio 2008 erstellt wurde.
Wenn ich es aus der Entwicklungsumgebung heraus starte funktioniert es einwandfrei, erstellt sein Untermenü und macht genau, was es soll. (Egal ob Debug oder Release Konfiguration)

Wenn ich jetzt aber das miterzeugte Setup-Projekt nutze um das Addin auf der selben Maschine zu installieren und starte dann Powerpoint, wird kein Fehler angezeigt, es startet einfach das Addin nicht und stellt das LoadBehavior in der Registry von 3 zurück auf 2.

Ich frage mich wirklich, wo ich mit dem Debugging hier anfangen soll, ich hoffe hier hat jemand einen guten Tipp.

Falls Ihr weitere Informationen über das Projekt benötigt poste ich diese jederzeit gerne.

Gruß,
esven

16.04.2009 - 10:28 Uhr

Okay, also das Problem ist gefunden und gelöst.

Ich wusste nicht, dass man Haltepunkte setzen muss um die Threads zu sehen.
Es war noch ein Thread da, der die SFTP-Verbindung offen hielt. Dieser wird jetzt immer richtig geschlossen und schon beendet sich der Prozess.

Allen antwortenden vielen dank für die Hilfe.

16.04.2009 - 09:48 Uhr

Ein

mutex.ReleaseMutex();

hat leider nicht geholfen.

16.04.2009 - 09:02 Uhr

Hi JAck30lena,

danke für die schnelle Antwort.

In der Threadliste sehe ich keine Threads, aber der Prozess bleibt weiterhin bestehen. Muss ich was bestimmtes machen, damit ich Threads in der Liste sehe?

Gruß

16.04.2009 - 08:45 Uhr

Hallo Liebe C#-Gemeinde,

Ich habe derzeit ein größeres Problem mit meinem Code, obwohl alle Threads gestoppt werden, und die Main-Methode auch bis zum Punkt "return" am Ende kommt, bleibt der Prozess bestehen. Im Debug Mode zeigt er mir auch keine Aufrufliste oder sonstwas an.

Vielleicht entdeckt ja jemand einen Fehler?!

Hier die Program.cs:


using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.ServiceProcess;
using System.Threading;
using System.Windows.Forms;
using System.Text;

namespace dcc.LogFileCollector.LogCollectorService
{
static class Program
{
private static Mutex mutex;
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AttachConsole(int ProcessId);

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();

[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FreeConsole();

/// <summary>
/// Der Haupteinstiegspunkt für die Anwendung.
/// </summary>
[STAThread]
static void Main(string[] args)
{
if (!IsApplicationStarted())
{
if (args.Length > 0)
{
if (args[0].Equals("config";))
{
Application.Run(new LogFileCollectorSettings());
}
else if (args[0].Equals("service";))
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new LogCollectorService()
};
ServiceBase.Run(ServicesToRun);
}
else
{
if (!AttachConsole(-1))
AllocConsole();
Console.WriteLine("Usage: " + Application.ExecutablePath.Substring(Application.ExecutablePath.LastIndexOf('\\')+1) + " [config|service]";);
FreeConsole();
}
}
else
{
if (!AttachConsole(-1))
AllocConsole();
Console.WriteLine("Starting TestCollector";);
try
{
TestCollector tc = new TestCollector();
}
catch (Exception e)
{
Console.WriteLine("Error: " + e.Message + "\n StackTrace: " + e.StackTrace);
}
FreeConsole();
}
}
else
{
if (!AttachConsole(-1))
AllocConsole();
Console.WriteLine("Only one instance of this application is allowed.\nPlease stop the service and try again.";);
FreeConsole();
}
return;
}

public static bool IsApplicationStarted()
{
string mutexName = Application.ProductName;
mutex = new Mutex(false, mutexName);
if (mutex.WaitOne(0, true))
return false;
else
return true;
}
}
}
13.09.2007 - 12:19 Uhr

Hallo,

Multithreading hatte ich bisher nur in Java, in C# eher nebensächlich.
In Java hab ich dazu immer von der Thread-klasse abgeleitet oder Runnable implementiert und die entspr. Methoden überschrieben.

Wie wird das denn vorzugsweise in C# gelöst?
Ich will neben meiner GUI-Anwendung im Hintergrund dauert Aufgaben ausführen lassen. (Daten sammeln und aktualisieren)

Vielen Dank schonmal
Gruß,
esven

13.09.2007 - 12:10 Uhr

Hehe, die Frage der Aufgabe ist die gleiche, wie eine Frage in meiner letzten Programmierkurs Klausur. Aber habe leider auch gerade keine Lust genau über deinen Code zu gucken.
Achte auf jeden Fall darauf, dass du die beiden Threads abwechselnd laufen lässt und beide nur dann arbeiten, wenn das Lager nicht voll (Produzent) oder leer (Konsument) ist.
Eine Frage der Synchronisation.

Oh, ich sehe gerade ich hole damit ein ziemlich altes Thema hoch. sry

06.09.2007 - 17:52 Uhr

Das stimmt, der Transport ist das Bottleneck.
Einmal müssen die Daten wohl oder übel über die Leitung kommen. Das wird beim ersten Mal etwas länger dauern. Nach Beendigung des Programms werde ich die geladenen Daten auf der Festplatte speichern, so dass sie beim nächsten Programmstart nur aktualisiert werden müssen. So wie auch während der Laufzeit des Programms.
Einzelne Änderungen zu übertragen ist nicht so wild, aber viele Anfragen erzeugen jeweils einen HTTP-Request und das dauert recht lange.
Der WebService auf den das SDK zugreift greift auch schon auf eine SQL-Datenbank zu, deswegen will ich nicht noch eine Datenbank erstellen. Allerdings kann ich auch nicht direkt auf die Datenbank zugreifen, das wäre zu unsicher, da bei inkonsistenzen ziemlich viele produktive Server darunter leiden könnten.

Vielen Dank für eure Hilfe. Mit LINQ werde ich mich dann mal noch etwas beschäftigen.

Und eine Kopie der Daten auf der Workstation brauche ich um in akzeptabler Geschwindigkeit die Ausgaben erzeugen zu lassen. Wenn man aber zB eine Zeichnung aktualisieren will und das dauert 1 Minute und länger ist das inakzeptabel.

Die Ladezeit am Anfang werde ich wohl oder übel mit einem Splash-Screen überbrücken müssen.

06.09.2007 - 14:37 Uhr

verwendetes Datenbanksystem: keins!

Hallo,

ich stecke derzeit noch in der Planungsphase eines Projekts, welches viele Daten von einem Webservice per xml geliefert bekommt. Leider ist der Webservice relativ langsam, so dass die Aktualisierung der Daten onDemand nicht in Frage kommt.

Jetzt will ich die Daten beim Starten der Anwendung in den Arbeitsspeicher laden. Schön wäre eine Anordnung in Tabellen mit Beziehungen usw.
Jetzt habe ich mich mit dem DataSet beschäftigt, aber so wie ich das sehe muss dahinter ein DBMS stecken, oder? Ich will nun auch nicht, dass jeder Anwender lokal einen SQL-Server Express oder so installieren muss. Außerdem sind es nur ein paar tausend Einträge, keine größeren Daten, so dass sich das auch nicht unbedingt lohnen würde.

Ich muss quasi eine VMWare Infrastructure auf dem Rechner abbilden, so dass die Verwaltung dieser schnell möglich ist.

Ich kann zwar scheinbar in das DataSet Tabellen usw. einfügen, aber die Daten darin nicht verwalten, bzw. die Daten, die da drin sind filtern usw. oder lieg ich da falsch?

Welche andere Möglichkeiten gibt es schnell viele kleine Daten zu verwalten mit Beziehungen usw.

Es sind übrigens Objekte verschiedenen Typs, welche andere Objekte anderen Typs beinhalten können aber ein Objekt kann auch mehrere Überordner haben.
zB ist eine Virtuelle Maschine gleichzeitig einem Host, einem Folder und einem Netzwerk zugeordnet.

Falls die gesamte Frage nicht klar geworden ist: Wie kann ich sowas am besten verwalten ohne einen SQL-Server auf dem PC installieren zu müssen. In Java würde ich vielleicht auf sowas wie Vector oder Listen oder so zugreifen.

Gruß,
esven

27.07.2007 - 10:58 Uhr

Sry, habs schon gefunden, stand aufm Schlauch.

Unter Projekt einfach einen Verweis zu System.Web.Services hinzufügen.

Wow, aber danke für die schnelle Antwort 🙂

27.07.2007 - 10:54 Uhr

Hallo,

Ich hab gerade frisch angefangen mit einem neuen Projekt in VS2005 Pro.

Allerdings findet er den Namespace System.Web.Services nicht. Im Objektbrowser kann ich ihn zwar sehen, aber nicht im Programm verwenden.

Fehler 1 Der Typ- oder Namespacename Services ist im Namespace System.Web nicht vorhanden. (Fehlt ein Assemblyverweis?) C:\User\Visual Studio 2005\Projects\ESX-Visualisierung2\ESX-Visualisierung2\VimObjects.cs 16 22 ESX-Visualisierung2

Hier das using:


namespace VimApi {
    using System.Diagnostics;
    using System.Web.Services;
    using System.ComponentModel;
    using System.Web.Services.Protocols;
    using System;
    using System.Xml.Serialization;
    ...

05.02.2007 - 20:45 Uhr

Danke für die Antwort, ich kann es leider erst am Donnerstag testen, werde dann aber Rückmeldung geben.

05.02.2007 - 14:28 Uhr

Hallo,

ich habe mit der XP Explorer Bar ein Problem. In eins der Expandos habe ich eine xpListView eingebunden aber wenn ich die Listview einmal einklappe und wieder ausklappe sieht man die Einträge nur noch gekürzt da drin.
Wenn ich das Expando ausgeklappt starten lasse, bleiben die Einträge komplett wenn ich es schon eingeklappt starten lasse und um es zu sehen ausklappen muss, werden die Einträge schon gekürzt.

Weiß jemand, wie ich das ausschalten kann?

Gruß
Sven

04.12.2006 - 18:28 Uhr

Problem ist, ich bekomme es nicht wieder eingeblendet, da der "Strich" dann auch weg ist. Auch am Rand nicht zu bekommen. In Opera gibt es das, da ist auf dem Strich auch ein kleiner Pfeil. Weiß keiner evtl. ne andere Control, mit der das geht?

04.12.2006 - 17:27 Uhr

Ich würde gerne so ein Panel benutzen, aber man soll es nicht größer oder kleiner schieben können, sondern nur aus- oder einblenden können, beim Klick auf den Trennstrich. Also da, wo man einen Splitcontainer derzeit ziehen kann. Gibt es da auch ne Möglichkeit?

01.12.2006 - 17:10 Uhr

Vielen Dank, die Seiten sind sehr aufschlussreich! Dann werd ich mir wohl ein Array zusammenbasteln mit harmonischen Farben, schließlich soll die Zeichnung auch in Präsentationen zum Einsatz kommen.

Meine Zeichnung flackert jetzt auch nicht mehr. Da dort nichts animiert ist, hab ich das jetzt so umgeschrieben, dass ich in das Image der PictureBox zeichne anstatt mit CreateGraphics. Und die paar mal, die sich ein Zustand ändert, oder ein User auf ein Symbol klickt, kann ich das Bild auch neu erstellen lassen und es ist nicht kurzzeitig verschwunden, sondern wird direkt komplett dargestellt.

01.12.2006 - 15:17 Uhr

So wie ich den sehe, kann dort der Anwender nur die Farbe selber wählen. Aber ich will ja in einer for Schleife unterscheidbare Farben "berechnen"

01.12.2006 - 14:15 Uhr

Ok, dann beschäftige ich mich damit nochmal genauer. Danke

Aber eine Frage hab ich noch, ich hoffe es ist nicht schlimm, dass ich einfach diesen Thread nochmal dafür benutze.
Ich will verschieden Farben wählen, wie mache ich das? Also im Moment hab ich mir ein Array of Brushes erstellt, und zähle die so durch, aber das ist ja nicht die optimale Lösung, vor allem, wenn viel mehr Farben gebraucht werden.

01.12.2006 - 14:04 Uhr

Hallo herbivore,

danke für die schnelle Antwort. Ich werde gleich mal schauen, wie ich das verwende 🙂
Aber im Moment berechne ich in der Methode, die die Grafik zeichnet auch immer die Koordinaten neu und für die Segmente benutze ich FillPie() die ich übereinander zeichne. Gäbe es da evtl. bessere Möglichkeiten?

Außerdem bleibt meine PictureBox leer, nachdem die Grafik das erste mal gezeichnet wurde. Ich muss dann erst nochmal das Paint-Event aufrufen, indem ich das Fenster vergrößer. Auch wenn ein anderes Fenster komplett über dem Fenster lag und dann minimiert wird, bleibt die Box erstmal leer.
Nicht aber, wenn das andere Fenster drüber hinweg geschoben wird.

01.12.2006 - 13:55 Uhr

Ich hab mir ein Programm geschrieben, um in unserer Firma die virtuelle Serverfarm zu visualisieren. Allerdings ist die Grafik noch sehr langsam. Wenn man das Fenster vergrößert wird die Grafik zentriert, aber dabei flackert sie sehr stark und man sieht immer, wie sie sich aufbaut. (Das dauert ca. ne halbe Sekunde)
Ich hab mir das Tutorial zur GDI schon durchgelesen, bin aber nicht wirklich schlau draus geworden.
Außerdem wird beim überfliegen der Punkte mit der Maus ein Tooltip mit Informationen zu der VM angezeigt, aber der Bereich, der unter dem Tooltip lag, wird nicht immer neu gezeichnet. Nur manchmal.

Ich will hier hauptsächlich danach fragen, wie ihr bei so einer Grafik vorgehen würdet um die möglichst schnell zu programmieren?
Ich bin insbesondere in Grafikprogrammierung noch ein Anfänger. In C# kann man sich ja schnell reingewöhnen, solange man sich nicht vom .NET-Framework erschlagen lässt.

Die Grafik wird derzeit in einer PictureBox gezeichnet, allerdings mit PictureBox1.CreateGraphics() nicht FromImage(). Das hat irgendwie nicht so richtig funktioniert.

10.11.2006 - 08:44 Uhr

Sind halt nur weniger Assistenten bei. Ich arbeite zu Hause mit VS2005 Pro und in der Firma mit Express, fürn normalen Windows-PC kann man wahrscheinlich genau die gleichen Anwendungen entwerfen.

Ihr fragt euch bestimmt, warum ich zu Hause die Pro und inner Firma die Express-Edition verwende 🙂 Ich bin Student und hab die Pro-Version ausm MSDNAA und inner Firma reicht völlig die Express-Edition.