Допустим, у меня есть две формы.После использования действия под названием PantallaEspera, которое создает экран ожидания, я хочу открыть новую форму, но она открывает ее, а затем вылетает.
Если я удалю действие, оно прекрасно работает.Вот что я сделал:
Экран загрузки:
using System;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RedBeetle.Forms_bueno
{
public partial class PantallaEspera : Form
{
public Action Proceso { get; set; }
public PantallaEspera(Action proceso)
{
InitializeComponent();
Proceso = proceso;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Task.Factory.StartNew(Proceso).ContinueWith(t => { this.Close(); }, TaskScheduler.FromCurrentSynchronizationContext());
}
}
}
Код, где я вызываю действие:
private void EjecutarBusqueda()
{
var listaUsuarios = AccesoDatos.DevolverNombresUsuario();
var esta = false;
foreach (string elem in listaUsuarios)
{
if (txtBuscar.Text == elem)
{
esta = true;
}
}
if (txtBuscar.Text == "")
{
//Si intentas buscar con el campo vacio no haces nada
}
else if (esta) //Si el nombre de usuario suministrado por el txtbox existe en la base de datos, procedes
{ //Si es el enter hace la busqueda
var perfilUsuario = new PerfilUsuario(txtBuscar.Text, caller);
perfilUsuario.Show();
}
}
private void BtnBuscar_Click(object sender, EventArgs e)
{
using( var pEspera = new PantallaEspera(EjecutarBusqueda))
{
pEspera.ShowDialog(this);
}
Hide();
}
Почему происходит сбой?Это мой первый год обучения C #, так что, возможно, я сделал что-то не так.Вот что происходит со второй формой: ![enter image description here](https://i.stack.imgur.com/hyvHh.png)
А вот так это выглядит без действия: ![enter image description here](https://i.stack.imgur.com/h4mG0.png)