LINQPad.Controls pause for input
For example here's a simple first approach, but are there better alternatives?
void Main()
{
var radioOne = new RadioButton("group1", "One").Dump();
var radioTwo = new RadioButton("group1", "Two").Dump();
var radioThree = new RadioButton("group1", "Three").Dump();
var btnRun = new Button("Run").Dump();
btnRun.Click += (sender, args) =>
{
if (radioOne.Checked)
{
DoSomething("One");
}
if (radioTwo.Checked)
{
DoSomething("Two");
}
if (radioThree.Checked)
{
DoSomething("Three");
}
};
}
private void DoSomething(string cmd)
{
cmd.Dump();
}
Many thanksJohn
Comments
-
How about this:
void Main() { var radioOne = new RadioButton ("group1", "One").Dump(); var radioTwo = new RadioButton ("group1", "Two").Dump(); var radioThree = new RadioButton ("group1", "Three").Dump(); new ContinueButton ("Run").Dump().Wait(); if (radioOne.Checked) "Radio1".Dump(); if (radioTwo.Checked) "Radio2".Dump(); if (radioThree.Checked) "Radio3".Dump(); } public class ContinueButton : Button { TaskCompletionSource<object> _finished = new TaskCompletionSource<object>(); public Task Task => _finished.Task; public void Wait() => Task.Wait(); public ContinueButton (string text = "Continue") : base (text) { IsMultithreaded = true; Click += (sender, args) => { _finished.TrySetResult (null); Visible = false; }; } }Put the ContinueButton class into My Extensions to use it from any query. -
Perfect - that works nicely. Thanks very much Joe.
-
Hi,
I'm a relatively inexperienced LINQPader... hit an issue trying to implement this.
I get an error (even after adding in the Namespace stuff)
"CS0305 Using the generic type 'TaskCompletionSource' requires 1 type arguments"
Tried to figure it out consulting the MS documentation, seems I need to add a type... but am out of my depth.Is there an update that shows how to do this with a type ?
Or is there a better way? I just want a button I can click (maybe inside a loop ?) that will then run my query using some user-input parameters. This post seemed real close to providing a mechanism to do that.BTW... I am running this in LINQPad 5. Will it be any different under LP 6?
Thanks, -
There was an issue with the markdown editor removing anything in angle brackets. It should be fixed now. The line in question should read:
TaskCompletionSource<object> _finished = new TaskCompletionSource<object>();
-
Thanks Joe... all good now.

