Ist ja ok, wenn du durch die Implementierung deiner Algorithmen lernen willst. Aber denke dran, dass du, wenn du ein Produkt erstellen willst, besser auf Array.Sort zurückgreifst.
Das Problem ist dein Comparer. Der weiss nämlich nicht, wann ein Item "kleiner" ist. Du brauchst auch gar kein SortedDictionary - wozu auch - du willst alles ja in der ursprünglichen Reihenfolge. Ausserdem hast du ja keinerlei richtiges Sortierkriterium, das was du machst, ist ja so nicht beschreibbar.
Worauf willst du hinaus? Für dich tut es doch auch ein normales Dictionary.
Hatte mal einen im Flight ( hoch/mittel/Tief), der sagte "Einen einstelligen Programmierer
würde er niemals einstellen.
Der würde ja neben der arbeit auch noch Zeit fürs Golfen haben."
Was ist bitte ein "einstelliger" Programmierer?
BTW: Es gibt von Microsoft eine Elite-Zertifizierung zum Architect, aber die bekommt man nur durch die Einladung eines Mentors, der selber dieses Zertifikat hat.
insert into tbl a
select * from tbl2 b
where not exists
(
select 1 from tbl a
where a.Schlüsselkriterium1 = b.Schlüsselkriterium1
and a.Schlüsselkriterium2 = b.Schlüsselkriterium2
-- asf.
)
using System;
using System.Reflection;
[assembly: AssemblyTitle("C#")]
[assembly: AssemblyDescription("C# Language")]
namespace AttributeExample
{
public class Program
{
public static void Main()
{
Assembly SampleAssembly = Assembly.Load(Assembly.GetExecutingAssembly().Full Name);
foreach (Attribute a in SampleAssembly.GetCustomAttributes(true))
{
if (a is AssemblyTitleAttribute)
Console.WriteLine("Assembly Title: " + (a as AssemblyTitleAttribute).Title);
if (a is AssemblyDescriptionAttribute)
Console.WriteLine("Assembly Description: " + (a as AssemblyDescriptionAttribute).Description);
}
}
}
}
Ich kenne den SQLServer nicht, aber unter Oracle würdest du bei so einem Trigger vermutlich eine Mutating Tables Exception bekommen.
Ausserdem ist bei vielen Datensätzen (not) exists gegenüber (not) in vorzuziehen, das ist in der Regel wesentlich schneller. Im Regelfall kann hier von Indizes besser Gebrauch gemacht werden. In schlägt exists von der Performance her eigentlich nur bei kleinen Listen, aber nicht bei großen subselects.
Ich persönlich kann diese Variante gar nicht leiden. Meines Erachtens ist diese Methode unnötig kompliziert geschrieben. Die Fehlerbehandlung sollte nicht über ErrorCodes im Caller gemacht werden, sondern direkt im try-catch Block. Viele Return-Statements machen den Code meines Erachtens schwer zu lesen und der Caller muss auch wissen, was die Magic Values die du da zurücklieferst eigentlich bedeuten.
Genaugenommen würde ich hier die meiste Fehlerbehandlung gar nicht in der Methode selbst machen, sondern eher im (geschäftslogischen) Kontext, in dem die Exception auftritt und in dieser Methode gar nicht abfangen.
hmm, irgendwie etwas dünne Doku^^ Aber ich denke dass eine Constraint immer so arbeitet wie man es von Constrints z.B. am SQL Server erwartet: Sie werfen eine Exception wenn etwas nicht passt. Leider fehlt eben in der MSDN hier der Verweis, ob und welche Exceptions geworfen werden.
Danke für den Hinweis! Werde mir die Sources mal angucken. Habe ich gestern auch schon übers VS versucht, aber irgendwie wollte das nicht so ganz klappen. Jetzt probier ichs nochmal mit dem NetMassDownloader.
Ruf beim Verlassen ohne zu Speichern für die entsprechende DataRow mal die RejectChanges Methode auf. Wenn das nicht funktioniert, musst du wohl manuell den Start zurücksetzen.
Das ist gar nicht toll, meines Erachtens. Baue eine ChatKomponente, kapsele darin deine Chatklasse und den Thread, instanziiere beim Connect eines Clients diese Komponente und starte sie, vergiss aber nicht sie vom Server in irgendeiner Liste abzulegen. Die Chatklasse sollte auch eine Referenz auf den Server enthalten.
Den Broadcast selber würde ich über ein Eventsystem steuern, also der Server wirft den Broadcast Event und die Chatklassen können diesen abbonieren.
Fraglich ist auch, ob so viele Threads gut sind. Ich würde lieber einen custom ThreadPool verwenden, wie du ihn bei codeproject findest.
WCF wäre durchaus eine Option. Hier könntest du die Geschäftslogik einheitlich für beide Frontends in einer Service Schicht realisieren.
Zudem würden dann Anpassungen an der Logik nicht zwangsweise ein neues Deployment des Desktop-Clients erfordern.
Ein weiterer Vorteil wäre auch, dass sich die Authentifizierung besser handhaben lässt.
Ein Nachteil ist allerdings, dass du dir unter Umständen ein Bottleneck schaffen kannst. Ob du das einsetzt, hängt also auch von der verfügbaren Infrastruktur ab.
Zitat
Eine Geschäftslogik programmieren und dann das jeweilige Frontend ändern?
Grundsätzlich sollte die Geschäftslogik IMMER unabhängig vom UI sein. Wenn du einen Fat Client für den Desktop willst, wirst du aber wahrscheinlich stellenweise nicht drumrum kommen, auch einen Teil der Geschäftslogik dort abzulegen.
Edit:
Achso, du willst feststellen, wann der DHCP Server das macht. Ich denke, dafür müsstest du mit einem "promiscuous" Interface einfach allen Traffic abhören und auf die entsprechenden Pakete reagieren. Näheres dazu in der Spec: http://www.ietf.org/rfc/rfc2131.txt
[offtopic]Rein subjektiv kommen mir die Ergebnisse meiner Suchanfragen bei Google besser vor. Habe ich mich nun schon so an die Suchmaschine angepasst, dass ich mit den anderen nicht mehr optimal umgehen kann oder ist Google einfach so viel besser? Ich mein, msn kann man ja z.B. total vergessen[/offtopic]
Was macht ihr denn genau? Welche Features hat die Software? Welche Zielgruppe habt ihr? Welche Arten von Projekten kann man damit managen? Unterstützt ihr oder haltet ihr euch an Projektmanagement Standards wie PMBOK?
Gut, ich kenne MVVM nicht, und er will mit WPF ran.
Ich habe mir darüber noch keine detaillierten Gedanken gemacht, finde aber, dass man prinzipiell nicht auf WPF angewiesen sein sollte, sondern auch einfach zwischen graphischen Frontends switchen können sollte, deswegen wäre ich gedanklich erstmal so naiv an die Sache rangegangen, das würde auch prinzipiell funktionieren.
Erstmal vorneweg: Threads halte ich für nicht so wichtig.
Die Logik vom GUI abzutrennen ist nicht besonders schwer. Am einfachsten wäre, "abstrakte" Logikklassen zu erstellen (Spiel, Spielfeld, Spieler, Einheit etc.) und dann GUI-Komponenten zu erstellen welche die jeweilige Logik-Klasse kapseln. Es sollte auch ein EventSystem geben, das es den einzelnen Bausteinen ermöglicht miteinander zu kommunizieren.
Dann brauchst du natürlich ein Grundgerüst, welches das "abstrakte" Spiel ablaufen lässt, also die Moves ausführt und zeichnet, weswegen du hier noch eine Schnittstelle einführen solltest, welche den Renderer repräsentiert.
Der Renderer nimmt dann deine Spielklasse, kapselt in seinem Subsystem die entsprechenden GUI-Klassen und stellt alles wie gewünscht dar. Für das RendererSubsystem und die Instanziierung der einzelnen GUI-Komponenten würde sich das Abstract Factory pattern anbieten.