Forum
See question

Como abrir CustomForm usando Multithreading   

176 views
1
0

Objectivo: ao abrir uma empresa ter uma série de código a correr “por tras” de forma a não bloquear a UI e, quando eventualmente acabar, abrir um CustomForm se necessário.

O seguinte código “funciona” mas depois dá erro na inicialização do form, nomeadamente no componente PriGrelha.

Presumivelmente tenho de o correr dentro de um BeginInvoke mas para isso preciso de passar a instancia do “main form” do ERP e não sei como o ir buscar dentro do evento DepoisDeAbrirEmpresa

 

private System.ComponentModel.BackgroundWorker backgroundWorker1;  

public override void DepoisDeAbrirEmpresa(ExtensibilityEventArgs e)
{
		this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
		this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
		this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted);

		//// Start BackgroundWorker
		backgroundWorker1.RunWorkerAsync();
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
	BackgroundWorker helperBW = sender as BackgroundWorker;
	//int arg = (int)e.Argument;
	e.Result = BackgroundProcessLogicMethod(helperBW);
	if (helperBW.CancellationPending)
	{
		e.Cancel = true;
	}
}
// Put all of background logic that is taking too much time      
private int BackgroundProcessLogicMethod(BackgroundWorker bw)
{
	//very lengthy code here

	return alertas;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{

	int alertas = PSO.Utils.FInt(e.Result);

	if (alertas > 0)
	{

		PSO.PainelNotificacoes.MostraAlerta("Auditor UWU", string.Format("Atenção, tem {0} alertas para validar!", alertas));

		using (var instance = this.BSO.Extensibility.CreateCustomFormInstance(typeof(Forms.CBL.AuditorCBL)))
		{
			if (instance.IsSuccess())
			{
				(instance.Result as Forms.CBL.AuditorCBL).Show();
			}
		}

	}
}

 

Faça login para poder traduzir
Integration
V10
Marked as spam
Created 4 years and 8 months ago jnatasfilipegomesferreira