Beispiel #1
0
        public override bool Read()
        {
            if (started)
            {
                if (nest == 0)
                {
                    source.Read();
                    return(false);                    // already consumed
                }
                if (!source.Read())
                {
                    return(false);
                }
            }
            else
            {
                started = true;
            }

            switch (source.NodeType)
            {
            case XamlNodeType.StartObject:
            case XamlNodeType.GetObject:
            case XamlNodeType.StartMember:
                nest++;
                break;

            case XamlNodeType.EndObject:
            case XamlNodeType.EndMember:
                nest--;
                break;
            }
            return(true);
        }
Beispiel #2
0
        public static void Transform(XamlReader xamlReader, XamlWriter xamlWriter, bool closeWriter)
        {
            if (xamlReader == null)
            {
                throw new ArgumentNullException("xamlReader");
            }
            if (xamlWriter == null)
            {
                throw new ArgumentNullException("xamlWriter");
            }

            if (xamlReader.NodeType == XamlNodeType.None)
            {
                xamlReader.Read();
            }

            while (!xamlReader.IsEof)
            {
                xamlWriter.WriteNode(xamlReader);
                xamlReader.Read();
            }
            if (closeWriter)
            {
                xamlWriter.Close();
            }
        }
Beispiel #3
0
 public void StartThread(string threadName)
 {
     if (thread != null)
     {
         throw new InvalidOperationException("Thread has already started");
     }
     thread = new Thread(new ParameterizedThreadStart(delegate {
         while (do_work && r.Read())
         {
             q.Writer.WriteNode(r);
             wait.Set();
         }
         read_all_done = true;
     }))
     {
         Name = threadName
     };
     thread.Start();
 }