Danke, die fragen wären damit beantwortet.
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:
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
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?
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
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
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.
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!
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?
achso, sorry. das finde ich allerdings schade, weil der thread ist in dem anderen forum zum erliegen gekommen und hat keine ergebnisse gebracht.
was willst du mir damit sagen? dort kommen keine antworten mehr und es gab keine lösung!
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?
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-"
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'.
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.
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?
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
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.
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?
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)
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.
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.
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?
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:
kann mir da jemand mit neuen ideen oder hinweisen weiterhelfen, wie ich das am geschicktesten mache?
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:
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?