フォームとコンソールを表示し、フォームからコンソールにテキストを書き込むことができますが、できません。フォームからコンソールにtxtを書き込む
まず、コンソールプログラムを作成してSystem.Windows.Formsを追加してフォームを作成しようとしました。それは働いたが、私がフォーム上にマウスを置くと、凍っているようだ。
2番目は、フォームがコンソールスレッドの一部であり、コンソールスレッドが待機中にReadKey
フォームがフリーズしていたためだと思いました。だから、私はbackgroundworker
を私のフォームを開く2番目のスレッドを作るようにしましたが、どちらもうまくいきませんでした。
これは私が逃すことであり、少し助けを求めます。ここ は、これまでの私のコードです:
using System.Windows.Forms;
using System.Threading;
namespace testform
{
class Program
{
static void Main(string[] args)
{
BackgroundWorker bgworker = new BackgroundWorker();
bgworker.WorkerSupportsCancellation = true;
bgworker.WorkerReportsProgress = true;
bgworker.DoWork += new DoWorkEventHandler(secondthread.bgworker_DoWork);
bgworker.RunWorkerAsync();
Console.Read();
}
public static class secondthread
{
private static Form myform = new Form();//create my form
private static TextBox mytxtbox = new TextBox();
public static void bgworker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
mytxtbox.TextChanged += new EventHandler(mytxtbox_TextChanged);
myform.Controls.Add(mytxtbox);
myform.Show();
for (int i = 1; (i <= 10); i++)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
worker.ReportProgress((i * 10));
}
}
}
private static void mytxtbox_TextChanged(object sender, EventArgs e)
{
Console.WriteLine(mytxtbox.Text);
}
}
}
}
私はメインから始まるすべての静的」原因をしなければなりませんでした。
お手伝いできますか?
最後の無限ループは不要です。理由なくCPUをビジー状態に保ちます。代わりにConsole.ReadLine()を使用できます。 –