除了等到用“ Console.ReadLine()”写东西之前,是否有办法检查是否写了某些东西

时间:2019-03-24 14:35:09

标签: c#

我正在使用TCPClient和TCPListener进行TCP Messenger程序ATM。一切正常。我已经将这两个程序放在单独的程序中,现在我基本上是在尝试使其成为一个程序。我坚持这样一个事实,即在检查接收之前,我一直写一些东西要发送,直到它一直等待着。我是C#和学习的新手。因此,我需要一种方法来检查“是否编写了某些内容?如果否,请跳过此步骤”,基本上是在问是否编写了某些内容。

我试图使它像“如果现在存储的行与上次相同,请跳过它”,这样它就不会无限地停留在程序的Send扇区中。但是它仍然总是等到我写了一些东西之后才检查/跳过它。

这是写和发送循环代码:

nachricht = Console.ReadLine();
if (nachrichtcheck != nachricht)
{
    Console.WriteLine("test1");
    TcpClient clientnachricht = new TcpClient(zielip, port);
    NetworkStream streamnachricht = clientnachricht.GetStream();

    sendnachricht = Encoding.ASCII.GetBytes(nachricht);

    streamnachricht.Write(sendnachricht, 0, sendnachricht.Length);

    streamnachricht.Close();
    clientnachricht.Close();
    nachrichtcheck = nachricht;
    Console.WriteLine("test2");
}
else
{
    if (empfangstream.CanRead)
    {
        Console.WriteLine("test3");
        byte[] receivedBuffer2 = new byte[100];
        NetworkStream stream = empfangclient.GetStream();

        stream.Read(receivedBuffer, 0, receivedBuffer.Length);

        StringBuilder msg2 = new StringBuilder();

        foreach (byte b in receivedBuffer)
        {
            if (b.Equals(00))
            {
                break;
            }
            else
                msg2.Append(Convert.ToChar(b).ToString());
        }

        Console.WriteLine("test4");
        empfangscheck2 = msg2.ToString();
        if (empfangscheck2 != empfangscheck)
        {
            Console.WriteLine(msg2.ToString());
            empfangscheck = msg2.ToString();
            Console.WriteLine("receive");
        }
    }
}

因此,如果有人可以帮助我,只是想办法让bool检查是否已写东西->然后使用它。除了等到写东西,否则->使用它会帮助我加倍努力。

1 个答案:

答案 0 :(得分:0)

我有替代方法来解决您的问题。您可以使用线程来等待用户输入,而不是实际的代码。


(我也考虑过你的德语)
代码示例:

using System;
using System.Threading;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            string nachricht = "";
            double AndereTätigkeitBeweis = 0;
        Thread NachrichtenEinleser = new Thread(()=> {
            Console.Write("Gib diene zu sendende Nachricht ein: ");//Type in the message you'd like to send
            nachricht = Console.ReadLine();//Read the user Input without stopping the actual code because it's another process
        });

        NachrichtenEinleser.Start();

        //do somewhat activity until you get a user input
        while (nachricht == ""){
            AndereTätigkeitBeweis++;
        }

        //Write out the user input
        Console.WriteLine($"User Input: {nachricht}|AndereTätigkeitBeweis: {AndereTätigkeitBeweis}");
        Console.ReadLine();
    }
}

}


  

输出示例:
  Gib Diene zu sendende Nachricht ein:哈罗
  用户输入:hallo |AndereTätigkeitBeweis:560075647   
  


  希望这会有所帮助。