插入 while true 循环时程序没有启动?
Program doesn't launch when while true loop is inserted?
我想制作一个程序,如果启动按钮被激活,它会打印 "Ah",我试过这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Spam_Spammer
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
while (true)
{
if (start.IsEnabled == false)
{
System.Diagnostics.Debug.WriteLine("Ah");
}
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
start.IsEnabled = false;
stop.IsEnabled = true;
check.IsEnabled = false;
spam_text.IsEnabled = false;
endpoint.IsEnabled = false;
}
private void Stop_Click(object sender, RoutedEventArgs e)
{
start.IsEnabled = true;
stop.IsEnabled = false;
check.IsEnabled = true;
spam_text.IsEnabled = true;
endpoint.IsEnabled = true;
}
}
}
但是当我启动程序时,看起来程序启动了,只是实际的UI不在这里?有任何修复吗?
What happens when I launch it
What it is supposed to launch
window 无法正常打开,因为它从未离开其构造函数。您可以通过单击按钮 运行 作为 Task
的代码,这样它就不会阻塞 UI 线程。
public partial class MainWindow : Window
{
static volatile bool running = false;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (running)
return;
running = true;
Task.Run(() =>
{
while (running)
{
Debug.WriteLine("Running");
}
});
}
private void stop_Click(object sender, RoutedEventArgs e)
{
running = false;
}
}
请注意 Task.Run()
returns 几乎立即(因此让调用方法完成)但任务本身将继续 运行ning。这样您也不必完全禁用 UI 元素。
我想制作一个程序,如果启动按钮被激活,它会打印 "Ah",我试过这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Spam_Spammer
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
while (true)
{
if (start.IsEnabled == false)
{
System.Diagnostics.Debug.WriteLine("Ah");
}
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
start.IsEnabled = false;
stop.IsEnabled = true;
check.IsEnabled = false;
spam_text.IsEnabled = false;
endpoint.IsEnabled = false;
}
private void Stop_Click(object sender, RoutedEventArgs e)
{
start.IsEnabled = true;
stop.IsEnabled = false;
check.IsEnabled = true;
spam_text.IsEnabled = true;
endpoint.IsEnabled = true;
}
}
}
但是当我启动程序时,看起来程序启动了,只是实际的UI不在这里?有任何修复吗?
What happens when I launch it
What it is supposed to launch
window 无法正常打开,因为它从未离开其构造函数。您可以通过单击按钮 运行 作为 Task
的代码,这样它就不会阻塞 UI 线程。
public partial class MainWindow : Window
{
static volatile bool running = false;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (running)
return;
running = true;
Task.Run(() =>
{
while (running)
{
Debug.WriteLine("Running");
}
});
}
private void stop_Click(object sender, RoutedEventArgs e)
{
running = false;
}
}
请注意 Task.Run()
returns 几乎立即(因此让调用方法完成)但任务本身将继续 运行ning。这样您也不必完全禁用 UI 元素。