Laden...
U
UliA myCSharp.de - Member
Software Developer Dabei seit 04.08.2009 25 Beiträge
Benutzerbeschreibung

Forenbeiträge von UliA Ingesamt 25 Beiträge

03.12.2010 - 11:58 Uhr

Danke, die fragen wären damit beantwortet.

02.12.2010 - 18:44 Uhr

Hallo,

um mal den kompletten Code meiner Mockup Instanz (entspricht dem Ablauf in meiner konkreten Implementierung) zu zeigen:


public int GetNextJobId()
{
	lock ((myMethodLocker)) {
		var lDummyResult = (new Random()).Next(1, int.MaxValue - 1);

		if (lDummyResult % 6 == 0) {
			lDummyResult = null;
		} else if (lDummyResult % 10 == 0) {
			lDummyResult = Config.DefaultJobID;
		} else if (lDummyResult % 7 == 0) {
			lDummyResult = 0;
		}

		return lDummyResult;
	}

	return Config.DefaultJobID;
}

Völlig unnötig. Man kann in VS einstellen, das man bei einer auftretenden Exception sofort anhält. Unabhängig davon ob es ein try-catch gibt oder nicht.

Genau so habe ich das auch bei mir konfiguriert

Aber bevor ich dem Threadstarter erklärt habe was da einzustellen ist, besser nen try catch drum
---> the root of all evil

Ich schließe mich da dem Kollegen an.

Anhand des Codes also nochmal klargestellt:

  • Die unterste Zeile kann nie ausgeführt werden
  • Beim Synclock bleiben alle Threads so lange stehen bis das Lock-Handle wieder frei ist. So werden sukzessive alle Threads hintereinander bedient. Sprich der eigentliche Worker wartet so lange bis er das Ergebnis bekommt.
02.12.2010 - 12:31 Uhr

Exception wird keine geschmissen, aber es ist natürlich schwierig den Fall zu produzieren, dass da gleichzeitig mehrfach darauf zugegriffen wird. Aber da es ja auch nicht mit Try Catch gekapselt wurde, hätte ja das Programm einen Fehler melden müssen, wenn es tatsächlich eine Exception gegeben hätte

02.12.2010 - 00:40 Uhr

Oh, sorry. Ich hatte vergessen den Code noch zu konvertieren.
Sprich in meinem Fall wird der aufrufende Task unterbrochen bzw. bei vielen Tasks halten tatsächlich alle. Somit kann als Rückgabewert auch nie die letzte Zeile (wie im Kommentar schon angemerkt) ausgeführt werden, richtig?

01.12.2010 - 22:02 Uhr

Hallo,

ich habe im Rahmen eines Druckdienstes einen JobController, der von allen Tasks / Threads aufgerufen wird. Genauer gesagt ist der JobController ein Singleton. Dieser hat die methode GetNextJobId. Innerhalb der Methode verhindere ich über SyncLock die üblichen Probleme bei Parallelisierung. Das sieht ungefähr so aus:


Public Function GetNextJobId() As Integer
            SyncLock (myMethodLocker)
                    Dim lResult = -1

                    'wenn ein Job in der DB steht, hole diesen und weise diesen der Variablen lResult zu

                    Return lResult
                End If
            End SyncLock

            Return -1 'wird anscheinend nie ausgeführt
End Function

Mir stellt sich jetzt folgende Frage: Was passiert, wenn ein Thread die Methode aufruft und das Lock-Object gesperrt ist. Steht die Verarbeitung dann still bis das Lock-Objekt freigegeben ist. Läuft es über den SyncLock-Block drüber und gibt den Wert weiter unten zurück oder kann die Methode einfach nicht aufgerufen werden (allerdings gäbe es dann ja eine Exception).

Gruß Uli

20.10.2010 - 22:43 Uhr

Hi,

wir wollen in unser ERP System eine Funktion integrieren, mit den der man aus mehrseitigen tiffs Texte/Inhalte löschen kann, z.B. wie in Paint, indem man ein weißes Rechteck darüber zeichnet. Da wir keine Ahnung von entsprechender Programmierung in dieser Domäne haben, haben wir nach fertigem Code in Google gesucht, dabei aber nichts gefunden. Hat da zufällig jemand Sample Code oder einen guten weiterführenden Link?

Hier haben wir schon welchen zum Einlesen der einzelnen tiff-Seiten gefunden: Edit multipage TIFF image using System.Drawing

Generell kann das mit Windows Forms oder WPF realisiert werden. Da sind wir nicht festgelegt.

Gruß Uli

23.11.2009 - 22:55 Uhr

hi,
danke für die infos. ich denke, dass wir mit lazy loading arbeiten werden und dann probieren wir noch, dass im hintergrund, nachdem die oberfläche mit den obersten zweigen geladen wurde, die restlichen äste in einem separaten thread nachgeladen werden. ich kann den code ja dann mal posten, wenn wir fertig sind.

23.11.2009 - 11:44 Uhr

Hallo herbivore,

danke für den Link. Das mit Threads und GUIs ist mir bewusst. Ich dachte eher, dass der Baum durch mehrere Threads gefüllt werden soll. Aber die genannte Methode schaue ich mir auch noch näher an!

23.11.2009 - 02:03 Uhr

hi,

zur speicherung unseres produktportfolios verwenden wir ein nested set. allerdings haben wir performance probleme, wenn wir den kompletten baum in einer winform darstellen (wie man es aus der baumstruktur des windows explorers kennt). an blättern gibt es 40.000 stück. kann man das irgendwie z.b. mit threading optimieren?

02.10.2009 - 15:51 Uhr

achso, sorry. das finde ich allerdings schade, weil der thread ist in dem anderen forum zum erliegen gekommen und hat keine ergebnisse gebracht.

02.10.2009 - 14:12 Uhr

was willst du mir damit sagen? dort kommen keine antworten mehr und es gab keine lösung!

02.10.2009 - 12:15 Uhr

Hi,

ich stehe vor einem kleinen Problem. Es geht um die Konfiguration von Anwendungen per XML. In meiner AppConfig habe ich die entsprechenden Settings. Um eine einfache Wartbarkeit zu gewährleisten, will ich Einstellungen in separate Dateien auslagern. Bei normalen Sections geht das mit dem Attribut 'configsource'. Ich bräuchte das allerdings für eine 'sectiongroup'. Auf der Seite http://forums.asp.net/p/1239056/2260116.aspx habe ich nun gelesen, dass das gar nicht möglich ist:

This problem is the attribute "configSource" can only be set on a config section not a config sectionGroup.
I am not sure why the oversight on MS part but you can not carve out an entire section group into a seperate file only a config section.

Weiß da jemand eine möglichkeit oder kann das gar widerlegen?

15.08.2009 - 20:40 Uhr

Hallo UliA,

das dictionary konnte ich nicht verwenden, da ich in der tat dopplungen brauche. also beispielsweise:
ich sehe kein Beispiel.

sorry, das sollte da nicht stehen. ich hab das schon auf dictionary umgestellt. war nur kurz der meinung, dass ich das brauchen würde, aber das kann ja logisch gesehen nicht der fall sein.

die regular expression hat mir allerdings zu viele fehler geschmissen, z.B.
Du musst natürlich die Regex-Syntax einhalten. In Regex hat das Plus wie eine ganze Reihe anderer Zeichen eine Sonderbedeutung. Wenn das + für ein Plus stehen soll, dann musst du + schreiben, siehe
>
. Wenn du das für alle Zeichen machen willst, verwende Regex.Escape.
herbivore

danke, damit klappt jetzt alles. aber der eigentliche grund, nämlich dass ich keine schleife machen muss, ist damit auch nicht erschlagen. folgendes coding


            Dim ltest = "-----a---b-----c--"
            ltest = Regex.Replace(ltest, "--", "-")
            Console.WriteLine(ltest)

produziert folgenden string: "---a--b---c-" statt "-a-b-c-"

14.08.2009 - 12:16 Uhr

ok, ich arbeite jetzt nur noch mit strings, keine stringbuilder objekte mehr.

das dictionary konnte ich nicht verwenden, da ich in der tat dopplungen brauche. also beispielsweise:

die regular expression hat mir allerdings zu viele fehler geschmissen, z.B.

"+" wird analysiert - Quantifizierer {x,y} nach nichts.

für die Ersetzung von '+' durch 'und'.

13.08.2009 - 17:58 Uhr

genau, deswegen ist es so besser, weil die anzahl der replacements, bei denen auch immer neue objekte erzeugt werden, höher sind, als die anzahl an objekten die ich mit .tostring erzeuge.

13.08.2009 - 17:42 Uhr

das problem ist,dass hier der erste string der key ist und somit keine duplicates drin vorkommen dürften...
das ist kein Problem, sondern ein Glück. Die Regeln ersetze A mit B und ersetze A mit C würde die ganze Sache undeterministisch machen.

vollkommen richtig, ich war da in gedanken bei dem eigentlichen string...für heute keine drogen mehr

zur while schleife:
Könnte man per Regex einfacher haben.

myString = Regex.Replace (myString, "-+", "-");  

da schau ich später gleich mal. nach so was hab ich gesucht.

aber da viele string operationen ausgeführt werden, denke ich ist ein stringbuilder objekt das sinnvollste

Nein, StringBuilder erhöht in diesem Teil deines Codes den Aufwand nur. Solltest du dort weglassen.

das versteh ich jetzt nicht. wieso das?

13.08.2009 - 11:54 Uhr

klar kannst du ein Dictionary<String,String> verwenden

das problem ist,dass hier der erste string der key ist und somit keine duplicates drin vorkommen dürften...

zur while schleife:

'---hello------world-----'

ergibt bei string.replace("--","-")

'--hello---world---' und nicht "-hello-world-"

über die zeilen


                    If _ParsedText.ToString.EndsWith("-") Or _ParsedText.ToString.EndsWith("/") Or _ParsedText.ToString.EndsWith("&") Then
                        _ParsedText = New StringBuilder(_ParsedText.ToString.Substring(0, _ParsedText.ToString.Count - 1))
                    End If

                    If _ParsedText.ToString.StartsWith("-") Or _ParsedText.ToString.StartsWith("/") Or _ParsedText.ToString.StartsWith("&") Then
                        _ParsedText = New StringBuilder(_ParsedText.ToString.Substring(1, _ParsedText.ToString.Count - 1))
                    End If

bin ich auch nicht ganz glücklich, weil ich da neue objekte erzeuge, statt das vorhandene objekt zu ändern. aber da viele string operationen ausgeführt werden, denke ich ist ein stringbuilder objekt das sinnvollste

13.08.2009 - 11:13 Uhr

hi,

ja, das mit string.replace ist mir bewusst. allerdings hatte ich schon komische konstellationen, wo das nicht sauber funktioniert hatte.allerdings hatte ich da mehrere ersetzungen hintereinander geschachtelt, sodass es vermutlich daran lag. prinzipiell macht das ja nichts, weil die while schleife nur 1x durchlaufen werden sollte. falls sie mehrmals durchlaufen werden würde, wäre es ja umso besser, dass ich sie implementiert habe.

eleganter z.b. in dem sinne, dass es ein entsprechendes dictionary gibt, welches immer 2 string beinhaltet und durch das man iterieren kann, oder sonstige spezielle string klassen, die für so was gedacht sind.

12.08.2009 - 18:43 Uhr

hi,

wir versuchen gerade unser Website mit sprechenden URLs aufzubauen. Die Url setzt sich aus der Breadcrumb zusammen, die beispielsweise so aussehen kann:

Schweißfittings > Red.-Stücke > geschweißt > konzentrisch > weitere ... > Getränke DIN 11851/11852
oder
Schweißfittings > Rohrbogen > geschweißt > Bauart 2, r=1xD > 45° > ISO Reihe

jetzt habe ich mir eine kleine Klasse geschrieben, die invalide oder nicht-google-optimierte Zeichen lösche/ersetzt

Die Klasse enthält als Member eine Liste von Strings, die so aufgebaut ist:


Private InvalidStrings As new List(Of String)

pInvalidStrings.Add("%")
pInvalidStrings.Add("-prozent")

pInvalidStrings.Add("(")
pInvalidStrings.Add("-")

pInvalidStrings.Add(")")
pInvalidStrings.Add("-")

pInvalidStrings.Add("-kt.")
pInvalidStrings.Add("-kant-")

pInvalidStrings.Add("Tlg.")
pInvalidStrings.Add("teiliger-")

pInvalidStrings.Add("tlg.")
pInvalidStrings.Add("teiliger-")

Im Anschluss ruf ich die Methode ParseUrl auf, der ich die Breadcrumb übergebe:


_ParsedText = New StringBuilder(vText)

If Not String.IsNullOrEmpty(_ParsedText.ToString) AndAlso pInvalidStrings.Count > 0 Then
For i As Integer = 0 To pInvalidStrings.Count - 1 Step 2
While _ParsedText.ToString.Contains(pInvalidStrings(i))
_ParsedText = _ParsedText.Replace(pInvalidStrings(i), pInvalidStrings(i + 1))
End While
Next

lResult = True
End If

If _ParsedText.ToString.EndsWith("-") Then
_ParsedText = New StringBuilder(_ParsedText.ToString.Substring(0, _ParsedText.ToString.Count - 2))
End If

If _ParsedText.ToString.StartsWith("-") Then
_ParsedText = New StringBuilder(_ParsedText.ToString.Substring(1, _ParsedText.ToString.Count - 1))
End If

Jetzt wolle ich nur wissen, ob man das vielleicht eleganter machen könnte?

05.08.2009 - 19:04 Uhr

Hi Leute,

das Problem lag wohl darin, dass ich parallel das SDK und die End User Runtime installiert hatte. Nachdem ich das SDK deinstalliert hatte, ging es.

Interessanterweise konnte ich das Problem nicht reproduzieren. Aber die Infos kann ich schon mal für ein kleines FAQ verwenden, falls die Kunden dann ähnliche Probleme haben werden (unter anderem kann ich mir vorstellen, dass NoScript und Adblock durchaus bei einigen Probleme machen könnten)

05.08.2009 - 10:24 Uhr

hi leute, danke für die infos. ich habe es mit win7 und vista auf aktuellem patchstand und ff 3.5.2 versucht. aber ich probiere es mal in meiner VM mit einer jungfräulichen FF installation. vielleicht liegt es an irgendeiner erweiterung.

zu frage, was passiert, wenn eine anwendung für silverlight 2 geschrieben wurde: soweit ich weiß, sollte silverlight immer abwärtskompatibel sein. allerdings hatte ich da auch schon ausnahmen. vielleicht weiß da jemand etwas konkreteres? aber ich werde mal schauen, ob ich dazu eine konkrete aussage finde.

zur frage mit der alten hardware: wie lautet denn der fehler genau. wenn es an der hardware liegen sollte, dann an der gpu, weil silverlight ab v3 diese intensiver nutzt (macht flash ja auch). des weiteren ist silverlight ja nur für betriebssysteme ≥ win2000 verfügbar (weiß allerdings nicht, ob das noch für die aktuelle version gilt oder ob hier winXP als mindestanforderung gilt). also wenn du xp und eine directx 9 fähige graka hast, sollte das eigentlich kein problem sein.

05.08.2009 - 01:35 Uhr

Aha gut zu wissen. Ich hab damals das PlugIn für FF noch separat installiert.

Hast du irgenwelche NoScript oder sonstiges im FF welche das Ausführen des PlugIns behindern können?

mfG Gü

ja, habe ich, aber 1. habe ich das komplett für diese seite deaktiviert und 2. wird nicht einfach nichts angezeigt, sondern es kommt die meldung, dass silverlight nicht auf dem system installiert ist.

05.08.2009 - 01:09 Uhr

Hallo,

Silverlight ist ein Browser-PlugIn. Es muss somit das PlugIn für jeden Browser separat installiert werden. Für FireFox gibt es das PlugIn auch schon.


>
gibt dabei über 1e6 Treffer aus.

mfG Gü

hi, danke für die prompte antwort. dass es ein browser plugin ist, ist mir klar. ich bin mir aber relativ sicher, dass es nur eine setup datei (für windows) gibt, die das plugin für alle unterstützten browser installiert. selbst wenn dem nicht so wäre, habe ich mit dem FF die seite Check Page aufgerufen, die mir sagt:

The version of Silverlight installed is:
Silverlight 3 GDR 1 (3.0.40723.0)

You are ready to use Microsoft Silverlight

es liegt also imho an der eigentlichen anwendung der seite oder sehe ich das falsch?

05.08.2009 - 00:17 Uhr

verwendetes Datenbanksystem: MSSQL

hi,

da ich vermehrt auf threading setze und mit dem entity framework arbeite, wollte ich wissen was die beste möglichkeit ist den object context zu sichern.

2 möglichkeiten sehe ich da:

  • ein thread safe singleton pattern für den prozess
  • ein using statement in der methode, die die threads erstellt, da ich beim threading in der regel klassen und deren instanzmethoden verwende. den klassen könnte ich eine statische klassenvariable für den context geben (so mach ich es aktuell)

kann mir da jemand mit neuen ideen oder hinweisen weiterhelfen, wie ich das am geschicktesten mache?

04.08.2009 - 23:54 Uhr

hi,

wir denken darüber nach ein kundenportal auf silverlight basis umzusetzen. allerdings finde ich immer wieder seiten, die lediglich vom IE und nicht vom FF unterstützt werden. ein beispiel aus der showcase reihe von silverlight.net:

IA Information Systems AG

mit dem IE kann ich die seite aufrufen, beim ff sagt es mir, dass ich silverlight nicht installiert hätte, was aber natürlich nicht so ist (im IE läuft es ja). kann mir jemand sagen, woran das liegt?