Laden...

Forenbeiträge von 4breeze Ingesamt 37 Beiträge

11.08.2009 - 15:18 Uhr

Vielen Vielen DANK!

11.08.2009 - 14:59 Uhr

Hallo Leute,

ich möchte so etwas machen:


BuchungsSumme = g2.Sum(g => STR.GlobalHelper.DateTimeHelper.DateTimeHelper.GetTimeSpanInHours(g.Von, g.Bis))

g.Von und g.Bis sind jewails vom Typ DateTime, die Methode gibt einen Double zurück.

Fehlermeldung: Method 'Double GetTimeSpanInHours(System.Nullable1[System.DateTime], System.Nullable1[System.DateTime])' has no supported translation to SQL.

Kann mir da jemand weiterhelfen?

Danke,
best regards
George

31.07.2009 - 19:11 Uhr

Ist die 3.5 nicht vollständig abwärtskompatibel zur 1.0?

Habe ich mir eigentlich auch so gedacht, wurde aber eines besseren belehrt. Zumindest in DotNetNuke waren andere Module nicht mehr lauffähig.

Wie auch immer, da es für dieses Problem keine richtige Lösung zu geben scheint, werde ich mal bei der System.Web.Extensions 1.0.61025.0 bleiben müssen.

schönes WE

best regards
george

30.07.2009 - 17:29 Uhr

Hallo, 😉

ich versuche beide Assemblies zu verwenden... hauptsächlich soll es die 1.0 sein, ich benötige aber manche Controlls aus 3.5.

Bis jetzt hab ich es noch nicht geschafft, ohne dass sich der Compiler beschwert...

vl hat ja noch wer Ratschläge!

kind regards
george

30.07.2009 - 15:16 Uhr

Der Typ "System.Web.UI.UpdatePanel" ist sowohl in "c:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions\3.5.0.0__31bf3856ad364e35\System.Web.Extensions.dll" als auch in "c:\WINDOWS\assembly\GAC_MSIL\System.Web.Extensions\1.0.61025.0__31bf3856ad364e35\System.Web.Extensions.dll" vorhanden. C:\Inetpub\DotNetNukeTest\DesktopModules\Test\Default.aspx

Hallo Leute, kann ich in der Web.config wo festlegen, dass er die Version 1.0.61025.0 nehmen soll?
Wie kann ich diesen Fehler umgehen?

Besten Dank,
regards george

22.06.2009 - 09:11 Uhr

Hallo Peter,

erstmals vielen Dank für die guten Unterlagen. Ich bin mit meiner Dynamischen Tabelle schon um einiges weiter 😃

Allerdings hab ich noch ein Problem mir den Type des zu ladenden UserControls zu merken.
In der Methode litType_Load() sollte ich das richtige Control laden. Hat jemand eine Idee wie ich das hinbekommen könnte?


    /// <summary>
    /// Create the Items in the RepeaterControl
    /// </summary>
    protected void repeater1_ItemCreated(object sender, RepeaterItemEventArgs e)
    {
        RepCollectionItem repItemData = (RepCollectionItem)e.Item.DataItem;
        if (repItemData != null)
        {
            // Find the first DropDownList
            DropDownList ddlName = (DropDownList)e.Item.FindControl("ddlName");
            ddlName.DataSource = data.GetNames();
            ddlName.DataTextField = "Name";
            ddlName.DataValueField = "Value";
            ddlName.DataBind();
            // Select the Value if it is in the ddl
            string savedName = repItemData.Name;
            ddlName.SelectedValue = savedName;

            // Find the second DropDownList
            DropDownList ddlType = (DropDownList)e.Item.FindControl("ddlType");
            ddlType.DataSource = data.GetTypes()[int.Parse(ddlName.SelectedValue)];
            ddlType.DataBind();
            // Select the Value if it is in the ddl
            string savedType = repItemData.Type;
            ListItem li = ddlType.Items.FindByValue(savedType);
            if (li != null)
                ddlType.SelectedValue = savedType;

            // Get the td-Cell for adding content..
            HtmlTableCell tdCell = (HtmlTableCell)e.Item.FindControl("tdExpression");

            // The LiteralControl for saving the ControlType....  (doesn't work)
            Literal litType = (Literal)e.Item.FindControl("litType");

            if ("Cars_Tabaco_Movies_Playboy".Contains(ddlType.SelectedValue))
            {
                // Add the UserControl - (yet it's not the big UserControl :)
                litType.Text = "1"; // try to save the UC_type in the RepeaterItem - (doesn't work now...)
                UC_LookUp lookUp = (UC_LookUp)this.LoadControl("~/UC/LookUp.ascx");
                lookUp.ID = "lookUp";
                lookUp.UC_ObjectName = repItemData.Expression.Value;
                tdCell.Controls.Add(lookUp);
            }
            else
            {
                // Add the ServerControl - Textbox
                litType.Text = "2"; // try to save the UC_type in the RepeaterItem - (doesn't work now...)
                TextBox tbxExpression = new TextBox();
                tbxExpression.ID = "tbxExpression";
                tbxExpression.Width = new Unit("90");
                tbxExpression.Text = repItemData.Expression.Value;
                tdCell.Controls.Add(tbxExpression);
            }
        }
        else
        {
            // Load the Repeater without a Datasource - Dynamic Controls need that to get there state...
            Control litType = e.Item.FindControl("tdExpression");
            if (litType != null)
                litType.Load += new EventHandler(litType_Load);
        }
    }
             

    void litType_Load(object sender, EventArgs e)
    {
        HtmlTableCell tdExpression = (HtmlTableCell)sender;
        Literal literal = (Literal)tdExpression.Parent.FindControl("litType");

        // cant get the control-type to load the correct Control :(
        int type = 0;
        if (!string.IsNullOrEmpty(literal.Text)) // always string.empty
        {
            type = int.Parse(literal.Text, System.Globalization.CultureInfo.InvariantCulture);
        }

        if (type == 2)
        {
            TextBox tbx = new TextBox();
            tbx.ID = "tbxExpression";
            tdExpression.Controls.Add(tbx);
        }
        else if (type == 1)
        {
            Control lookup = this.LoadControl("~/UC/LookUp.ascx");
            lookup.ID = "lookUp";
            tdExpression.Controls.Add(lookup);
        }
    }



lg. george

19.06.2009 - 13:26 Uhr

Hallo Leute,

ich bin dabei mir eine Dynamische Tabelle zu erstellen. Das ganze sieht so aus:

Ich verwende einen Repeater und im ItemCreated-Event setze ich je nach Userauswahl die richtigen werte in den DropDownList‘s.
Jede DDL ist mit einem AutoPostBack versehen womit die Tabelle gespeichert wird.

Soweit alles gut und fein, aber…
Ich möchte in der dritten Spalte je nach Userauswahl ein UserControl oder eine TextBox anzeigen.
Wenn ich jetzt aber ein Dynamisches Control im ItemCreated-Event lade wird es zwar richtig angezeigt, aber ich bekomme keine Values.

Wie realisiert man so eine Dynamische Tabelle?

Vielen DANK

Ressourcen/Anhaltungspunkte:
http://forum.springframework.net/archive/index.php/t-146.html
http://forums.asp.net/t/1430862.aspx?PageIndex=2

27.01.2009 - 18:32 Uhr

hm..

Trigger.SourceName kann man leider nicht in Styles verwenden. Gibt es da noch andere Möglichkeiten?

26.01.2009 - 22:47 Uhr

Hallo,

ich möchte in einem Trigger einen Wert eines anderen Controls prüfen. Im nachstehenden Beispiel sollte der Trigger ausgelöst werden, wenn ContextMenu.IsOpen True ist, bzw. wenn das Kontext-Menü vom Button geöffnet ist. Dem ist aber nicht so.

Wie kann ich das Realisieren?

   <Window.Resources>
        <ContextMenu x:Key="CM">
            <MenuItem Header="Test01"></MenuItem>
            <MenuItem Header="Test02"></MenuItem>
            <MenuItem Header="Test03"></MenuItem>
        </ContextMenu>
        <Style TargetType="Button">
            <Setter Property="ContextMenu" Value="{StaticResource CM}" />
            <Style.Triggers>
                <Trigger Property="ContextMenu.IsOpen" Value="True">
                    <Setter Property="Background" Value="Green" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources
    <StackPanel>
        <Button>Hallo</Button>
    </StackPanel>

merci!

15.11.2008 - 18:34 Uhr

Tatsächlich... ich senke mein Haupt X(

Zum Glück gibt's myCSharp.de und deren nette Community die auch die "kleinsten" Fehler entdeckt 🙂

regards!

15.11.2008 - 13:39 Uhr

underline bzw. Unterstrich, damit meine ich den character: _

😉

regards...

15.11.2008 - 08:39 Uhr

Hallo Taladan,

danke für deine Antwort, mittlerweile habe ich auch entdeckt was wir beide anders machen 😉
Ich verwende underlines, du nicht! Dein Code funktioniert, meiner nicht.

Jetzt ist die Zeit gekommen, ich verwende nie wieder underlines…!

Best regards,
4breeze

15.11.2008 - 00:29 Uhr

Hallo Leute,

Ich habe ein CustomControl mit einem DependencyPropertie erstellt:


    public class CustomControl1 : Control
    {
        public static DependencyProperty D_NameProperty;

        static CustomControl1()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1)));

            // Register DependencyProperty
            D_NameProperty = DependencyProperty.Register("DName", typeof(string), typeof(CustomControl1));
        }

        public string D_Name
        {
            set { SetValue(D_NameProperty, value); }
            get { return (string)GetValue(D_NameProperty); }
        }
    }

Den Wert von meinem DependencyPropertie möchte ich an einen Button.Content binden:


    <Style TargetType="{x:Type local:CustomControl1}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:CustomControl1}">
                    <Border>
                        <Button Content="{TemplateBinding D_Name}"></Button>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Jetzt erstelle ich das Control, übergebe dem Property einen Namen und füge es zu meiner Anwendung:


        private void add_Click(object sender, RoutedEventArgs e)
        {
            CustomControl1 myControl = new CustomControl1();
            myControl.D_Name = "Max Muster";
            wrapPannel.Children.Add(myControl);
        }

So, und jetzt bekomme ich die Fehlermeldung:
XamlParseException occurred
Cannot convert the value in attribute 'Content' to object of type 'System.Windows.TemplateBindingExtension'. Error at object 'System.Windows.Controls.ControlTemplate'

Kann mir da jemand weiterhelfen?

Besten Dank

14.01.2008 - 14:20 Uhr

Besten Dank!
regards

14.01.2008 - 13:44 Uhr

Hallo Leute

Ich baue gerade eine Auflistung nach Buchstaben. Also mit klick auf "A" kommen alle Wörter mit Anfangsbuchstaben "A" , Mit klick auf "B" kommen alle Wörter mit Anfangsbuchstaben "B" usw…

Das funktioniert so auch ganz gut:

SELECT    Rezept, ID
FROM      FS_Rezepte
WHERE     Rezept LIKE 'f%'
ORDER BY  Rezept

Jetzt möchte ich aber alle Wörter beginnend mit einer Zahl zusammenfassen. Mit klick auf "#" sollten alle Wörter beginnend mit einer Zahl aufgelistet werden. (oder alle zeichen !=a-z)

Wie lautet hier das richtige SELECT STATEMENT?

verwendetes Datenbanksystem: Sql Server 2005

Danke

29.10.2007 - 18:35 Uhr

Hallo Leute,

Ein FormView liefert mir über eine ObjectDataSource Werte. Davon benötige ich einen Wert für einen ObjectDataSourceParameter einer DataList die auf derselben Seite angezeigt werden soll.

Wie ist es möglich, diesen Wert dem ObjectDataSourceParameter zu übergeben?

Danke,
4breeze

29.08.2007 - 10:21 Uhr

Hallo B1rd,

ich habe das selbe Problem..
hast du in der Zwischenzeit schon eine Lösung gefunden wie man ein minimiertes MdiChild bei einem menuStrip-Click geöffnet in den Vordergrund bringt ?

danke

regards 4breeze

21.08.2007 - 14:55 Uhr

Hallo Leute,

wie bezeichnet man solche editierbaren asp.net TextBoxen?

danke

01.08.2007 - 21:08 Uhr

Hallo falangkinjau,

ich sag dann mal recht herzlichen Dank 🙂

gruß,
george

01.08.2007 - 20:55 Uhr

Schönen Guten Abend liebe Leute 🙂

Meine Tabelle:

[Schuljahr]
2003
2003
2003
2005
2006
2006

Gewünschtes Resultat:

2003
2005
2006

Es sollen also alle vorhandenen Jahre nur einmal zurückgegeben werden.

Kann mir da jemand weiterhelfen?

danke,
george

verwendetes Datenbanksystem: mssql2005

17.07.2007 - 17:36 Uhr

Hallo Peter,
Hallo Leute,

ich hab jetzt eine kleine Beispiel-Anwendung erstellt. Vielleicht seid Ihr so nett und könnt mal einen Blick drauf werfen.

ja, das ganze soll temporär sein.

RAR Datei im Anhang - bitte schaut mal drauf, Danke

gruß, george

10.07.2007 - 23:01 Uhr

Hallo Leute, Hallo Peter

Mein Lösungsweg scheint nicht der richtige zu sein.

Zuerst mal ein Bild das mein UserControl zeigt: (das Control kommt in eine schleife, hier also vier Controls)

Dieses UserControl wird beim Seitenaufruf geladen und beliebig oft mit verschiedenen Inhalt dargestellt.

Jetzt möchte ich ein Bild mit den darunter zugehörigen Pfeilen nach rechts oder links
verschieben. Ich ordne also bei einem PfeilEventClick meine Arraylist neu und lade
erneut meine Bilder(UserControls).
Bei einem ersten Versuch ein Bild neu anzuordnen funktioniert alles, nur bei einem
zweiten Klick auf einem Pfeil löst sich das Event nicht.

Warum sich die Events bei einem zweiten Versuch nicht lösen kann ich mir nicht
erklären, schuld ist auf jeden Fall mein Befehl "pnlImgList.Controls.Clear();" den ich
ausführen muss bevor die neuen Bilder(Controls) aufgelistet werden.

Wie soll ich da richtig vor gehen, um mein gewünschtes verhalten immer beizuführen?

Gruß,
breeze

Hier noch der dazugehörige code:


public partial class EventsEdit : System.Web.UI.Page 
{
    ArrayList arrImg;
    
    int queristring;
    public int MyQueristring
    {
        get { return queristring; }
        set { queristring = value; }
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        MyQueristring = Convert.ToInt32(Request.QueryString["id"]);
        
        if (!Page.IsPostBack)
        {
            arrImg = new ArrayList();
            SqlDataReader reader = DataAccess.GetImgNames(MyQueristring);
            while (reader.Read())
            {
                arrImg.Add(reader["imgName"]);
            }
            Session.Clear();
            Session["sessionArrImg"] = arrImg;
        }

        if (IsPostBack)
        {
            if (Session["sessionArrImg"] != null)
            {
                arrImg = (ArrayList)Session["sessionArrImg"];
            }
        }

        if (Request.QueryString["id"] != null)
        {
            if (!IsPostBack)
            {
                SqlDataReader reader2 = DataAccess.GetEvent(MyQueristring);
                reader2.Read();
                txtHeader.Text = Server.HtmlDecode((string)reader2["header"]);
                txtContent.Text = Server.HtmlDecode((string)reader2["textContent"]);
            }
        }

        GetThumbnail();
    }
    
    protected void GetThumbnail()
    {
        int count = 0;
        foreach (string tempImg in arrImg)
        {
            ImgControl imgControl = (ImgControl)LoadControl("ImgControl.ascx");

            imgControl.ImgCount = count;
            imgControl.ImgUrl = tempImg;

            imgControl.CtrLinkClickedDelete += new CtrLinkClickedEventHandler(imgControl_CtrLinkClickedDelete);
            imgControl.CtrLinkClickedLeft += new CtrLinkClickedEventHandler(imgControl_CtrLinkClickedLeft);
            imgControl.CtrLinkClickedRight += new CtrLinkClickedEventHandler(imgControl_CtrLinkClickedRight);

            pnlImgList.Controls.Add(imgControl);
            count++;
        }
    }

    void imgControl_CtrLinkClickedLeft(object sender, CtrLinkClickedEventArgs e)
    {
        pnlImgList.Controls.Clear();

        if (e.Sort == 0)
        {
            arrImg.Insert(arrImg.Count, arrImg[0]);
            arrImg.RemoveAt(0);
        }
        else
        {

            arrImg.Insert(e.Sort - 1, arrImg[e.Sort]);
            arrImg.RemoveAt(e.Sort +1);
        }
        
        GetThumbnail();
        Session["sessionArrImg"] = arrImg;
    }
}

03.07.2007 - 07:55 Uhr

Hallo Peter

Ok, da bleibt also nur der Weg mit einer Class Library - auch gut..

Danke Peter

Gruß George

03.07.2007 - 00:51 Uhr

Hallo Leute

Ich möchte ein Abgeleitetes Control in der Toolbox zum anzeigen bringen.
Laut meiner Textvorlage sollte dieses Control automatisch nach einem ReBuild in der Toolbox von VisualStudio erscheinen. Dem ist aber nicht so…

Meine Classe befindet sich im App_Code Verzeichnis.

public class NameTextBox : TextBox
{
    //code..
}

Was ist den da noch zu beachten?

danke,
Gruß George

27.06.2007 - 18:50 Uhr

Ja, ja, ja...
Das gefällt mir schon besser! Dann werde ich mich mal in UserControls einlesen.

Besten DANK!

Wie war jetzt genau, die Frage? 🙂

^^

gruß,
breeze

27.06.2007 - 17:44 Uhr

Hallo Leute,

ist es möglich einen ImageButton an der Position "X" im String hinzuzufügen?


    ArrayList arrImg;
StringBuilder builderImg = new StringBuilder();

    protected void GetThumbnail()
    {
        //ImageButton btnDelete = new ImageButton();
        //btnDelete.ImageUrl = "~/IMG/delete.gif";
        // ???.Controls.Add(btnDelete);

        foreach (string tempImg in arrImg)
        {
            builderImg.Append("<div class=\"divImg\"><img src=\"Files/" + tempImg + "_min.jpg\"/><br />" + "X" + "<br />delete</div>");
        }
        DIV1.InnerHtml = builderImg.ToString();
    }

Gruß,
breeze

26.06.2007 - 22:35 Uhr

ok,
habe ich jetzt lösen können, hat mit den Schemas zu tun...

Schönen Abend noch 🙂

26.06.2007 - 21:49 Uhr

Hallo Leute, noch eine Frage:

Ich habe folgende Tabelle Lokal und Online am Server:
4breeze.fs_events

Am Onlineserver kann ich mit "select * from fs_events" zugreifen.

Am Lokalserver geht das nicht (Invalid object name 'fs_events'.) .
Lokal kann ich nur mit "select * from [4breeze].fs_events" zugreifen.

Ich möchte aber am Lokalen Server gleich wie auf den Onlineserver zugreifen. Giebt es eine Einstellung die dies ermöglicht?

Gruß,
4breeze

26.06.2007 - 20:18 Uhr

Danke an allen ober mir! Ich war zu "naiv" (dumm will ich nicht schreiben 🙂

Also, wichtig: zuerst ganz normal mit "Windows Authentication" verbinden. (Dann findet man auch die Einstellungsmöglichkeiten)
Dann die Einstellungen vornehmen.
Server neu starten
Dann sollte man sich per "sql server authentication" verbinden können.

Gruß,
4breeze

26.06.2007 - 15:01 Uhr

Hallo Leute, hallo VizOne,

ich möchte mich auch mit "sql server authentication" verbinden, nur verwende ich
"Microsoft SQL Server Management Studio Express" und vermisse die oben genannten
Möglichkeiten um einen Benutzer anzulegen.

Unterstützt die Express Version dies nicht, oder finde ich das ganz einfach nicht?

Gruß,
george

19.06.2007 - 13:34 Uhr

Hallo herbivore,

Erstmals danke für deine Erläuterung und danke für dieses tolle Beispiel.

So, noch eine Frage:

Momentan ist es ja so, dass die bestehenden Farbinformationen im Bild ignoriert werden
und der Farbanteil des bestimmten Farbtons aus den Grautönen berechnet wird.

Ist es auch möglich mit einer ColorMatrix alle Grautöne im Bild unverändert zu lassen
und nur diese Pixel zu färben die Farbinformationen beinhalten?

zb: Alle Pixel mit RGB Farbanteile sollen in einen bestimmten Farbton umgewandelt
werden. Je mehr Farbanteile der jeweilige Pixel aufweist, desto mehr
Farbanteile(Intensität) bekommt er vom bestimmten Farbton.

Gruß,
breeze

18.06.2007 - 21:53 Uhr

So… , ich scheitere an der Matrixmultiplikation. Theoretisch ist ja alles möglich. So wie hier zb. eine
Matrix für sepia:

float[][] colorMatrixElements = {
        new float[] {0.393f, 0.349f, 0.272f, 0, 0},
        new float[] {0.769f, 0.686f, 0.534f, 0, 0},
        new float[] {0.189f, 0.168f, 0.131f, 0, 0},
        new float[] {0,  0,  0,  1,  0},
        new float[] {0,  0,  0,  0,  1}};

funktioniert wunderbar, nur wie schaffe ich das mit diesem Farbton?

Farbtonwerte:
R:115
G:169
B:195

Falls mir da jemand helfen kann, oder jemand Informationen (speziel für Anfänger) zur Matrixmultiplikation hat, dann bitte hier preisgeben!

DANKE

17.06.2007 - 12:33 Uhr

Besten Dank Herbivore!
dann werde ich mich mal rann machen..

Gruß,
breeze

17.06.2007 - 10:51 Uhr

Hallo mal alle!

Wie kann ich in asp.net ein Bitmap in eine Farbe einfärben oder kolorieren?

Hier mal ein Beispiel:

Also das Resultat sollte so ein Blau ton sein. Bin dankbar für jeden Anhaltspunkt.

Grüße,
breeze

13.06.2007 - 22:01 Uhr

Besten Dank,
dann werde ich so vorgehen.

Schöne Grüße aus Graz,
breeze

11.06.2007 - 20:35 Uhr

Hallo,

ich möchte hier mal Rat einholen, bzw. fragen ob diese vorgehensweiße richtig ist.

Das ganze soll ein kleines Eingabeformular werden. Benötigt wird eine Überschrift, ein Text und der User kann beliebig viele Bilder anhängen. Die Bilder werden einzeln am Server hochgeladen und der Name des Bildes kurzzeitig im sessionstate gespeichert. Sobald der User Überschrift und Text eingegeben hat und den Upload bestätigt, werden auch die zuvor im sessionstate gespeicherten Bildernamen in die Datenbank geschrieben.

Nachdem Überschrift und Text in die DB geschrieben wurden muss ich ermitteln welche ID dieser eintrag hat. Erst mit dieser ID kann ich die Bildernamen in die DB eintragen da ja die TextTabelleID (FK) den gleichen wert haben muss. So sind dann die Bilder dem jeweiligen Eintrag richtig zugeordnet.

Ist diese vorgehensweiße ok, oder macht man das anders?

TextTabelle - beinhaltet die Überschrift und einen Text:
ID (PK)
headerText
contentText

ImgTabelle - beinhaltet den Namen(url) des Bildes:
TextTabelleID (FK)
imgName

mssql2005
Gruß, breeze

30.10.2006 - 11:03 Uhr

hi,

Ich verstehe die Erklärung des Rückgabe wertes nicht...
(http://msdn2.microsoft.com/de-de/library/ateab679.aspx)

warum gibt die Schleife „while (Monitor.Wait(obj))“ in class ConsumeNumber beim ersten mal „true“ zurück und bei den nächsten Durchläufen „false“?

ich verstehe das nicht, vielleicht kann mir das jemand erklären.


using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace ConsoleApplication74
{
    class Program
    {
        public static bool finished = false;
        public static bool thread1Waiting = false;
        public static bool thread2Waiting = false;

        static void Main(string[] args)
        {
            MyNumber zahl = new MyNumber();
            ProduceNumber prod = new ProduceNumber(zahl);
            ConsumeNumber cons = new ConsumeNumber(zahl);
            Thread thread1, thread2;
            thread1 = new Thread(new ThreadStart(prod.MakeNumber));
            thread1.Name = "thread 1";
          
            thread2 = new Thread(new ThreadStart(cons.GetNumber));
            thread2.Name = "thread 2";
            thread1.Start();
            thread2.Start();
        }
        
    }
    class ProduceNumber
    {
        private MyNumber obj;
        public ProduceNumber(MyNumber obj)
        {
            this.obj = obj;
        }
        public void MakeNumber()
        {
            Random rnd = new Random();
            Monitor.Enter(obj);
            for (int i = 0; i <= 10; i++)
            {
                Program.thread1Waiting = true;
                // falls Konsumer-Thread noch nicht im Wartezustand, selbst in den Wartezustand gehen
                if (Program.thread2Waiting == false)
                    Monitor.Wait(obj);
                obj.Number = rnd.Next(1000);
                Console.WriteLine("NUmmer {0} erzeugt", obj.Number);
                // dem nächsten in der Warteschlange stehenden Objekt den Monitor übergeben
                Monitor.Pulse(obj);
                Program.thread2Waiting = false;
            }
            Program.finished = true;
            Monitor.Exit(obj);
        }
    }
    class ConsumeNumber
    {
        private MyNumber obj;
        public ConsumeNumber(MyNumber obj)
        {
            this.obj = obj;
        }
        public void GetNumber()
        {
            Monitor.Enter(obj);
            //  wenn sich der Erzeugerthread im Wartezustand befindet, ihn bereit schalten
            if (Program.thread1Waiting)
               Monitor.Pulse(obj);
            Program.thread2Waiting = true;
            
            while (Monitor.Wait(obj))               // ???? rückgabewert???
            {
                Console.WriteLine("Nummer {0} verbraucht", obj.Number);
                Monitor.Pulse(obj);
                if (Program.finished) Thread.CurrentThread.Abort();
            }
            Monitor.Exit(obj);
        }
    }
    // repräsentiert eine Zahl-----------------------------
    class MyNumber
    {
        private int intValue;
        public int Number
        {
            get { return intValue; }
            set { intValue = value; }
        }
    }
}



Beispiel von http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_11_002.htm#Xxxobkap11002040018e51f02c186