В моей программе есть вкладка, где я могу написать и запустить код. При его запуске, появляется окошко с двумя TextBox'ами, в первом вывод, а во втором ввод информации.
Для ввода информации, мне нужно сделать свои методы Read и ReadLine. Но столкнулся с проблемой, так как не знаю, как ожидать ввод информации в TextBox, без остановки всей программы.
Вот мой код:
namespace PipeConsole {
public partial class Form3 : Form {
public static bool WaitingForRead { get; set; }
public static string Input { get; set; }
public static CompilerResults Results { get; set; }
public Form3 (string source) {
InitializeComponent ();
CSharpCodeProvider codeProvider = new CSharpCodeProvider ();
CompilerParameters parameters = new CompilerParameters ();
parameters.ReferencedAssemblies.Add (typeof (MethodsForConsolePipe.Chat).Assembly.Location);
parameters.GenerateExecutable = true;
Results = codeProvider.CompileAssemblyFromSource (parameters, source);
Results.CompiledAssembly.GetType ("ConsolePipe").InvokeMember ("Main", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.NonPublic, null, null, null);
}
//Компилируется и запускается код из консоли
private void KeyPressed (object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter && !e.Shift && WaitingForRead) {
WaitingForRead = false;
Input = (sender as TextBox).Text;
}
}
//Обработка нажатия клавиш в textBox
}
public class Console {
public static string ReadLine () {
Form3.WaitingForRead = true;
//Тут должен ожидаться ввод
return Form3.Input;
}
}
}
Как мне кажется, так как KeyPressed и Console.ReadLine у меня в одном потоке, а нужно что бы они работали синхронно, то нужно что-то сделать именно с потоками или пулом потоков. Но мне ничего в голову не пришло. Надеюсь Вы поможете. Заранее спасибо!
Вот обработка ввода:
private void KeyPressed (object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Enter && !e.Shift && WaitingForRead) {
WaitingForRead = false;
Input = textBox1.Text;
}
public class ConsoleP {
public static string ReadLine () {
Form3.WaitingForRead = true;
while (Form3.WaitingForRead)
Thread.Sleep (5);
return Form3.Input;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В данный момент при любом статусе оплаты или ее стадии осуществляется редирект на нужную страницу и все ок, но только при клике на "вернуться...
Есть следующий код, задача которого удалить данные из бдСейчас все данные удаляются при переходе по ссылке localhost/?id=666
Необходимо на получить время полуночи текущей даты (например, 1812