Je souhaite supprimer les éléments cochés de la checklistbox (contrôle winform) dans la méthode de fichier de classe que j'appelle de manière asynchrone à l'aide de deletegate. mais il me montre ce message d'erreur: -Opération croisée non valide: accès à partir d'un thread autre que le thread sur lequel elle a été créée
Opération croisée pas valide: Contrôle 'checkedListBox1' accédé à partir d'un thread autre que le thread sur lequel il a été créé.
J'ai essayé d'invoquer requis mais j'ai encore eu la même erreur. Exemple de code est ci-dessous:
private void button1_Click(object sender, EventArgs e)
{
// Create an instance of the test class.
Class1 ad = new Class1();
// Create the delegate.
AsyncMethodCaller1 caller = new AsyncMethodCaller1(ad.TestMethod1);
//callback delegate
IAsyncResult result = caller.BeginInvoke(checkedListBox1,
new AsyncCallback(CallbackMethod)," ");
}
Dans le code de fichier de classe pour TestMethod1 est: -
private delegate void dlgInvoke(CheckedListBox c, Int32 str);
private void Invoke(CheckedListBox c, Int32 str)
{
if (c.InvokeRequired)
{
c.Invoke(new dlgInvoke(Invoke), c, str);
c.Items.RemoveAt(str);
}
else
{
c.Text = "";
}
}
// The method to be executed asynchronously.
public string TestMethod1(CheckedListBox chklist)
{
for (int i = 0; i < 10; i++)
{
string chkValue = chklist.CheckedItems[i].ToString();
//do some other database operation based on checked items.
Int32 index = chklist.FindString(chkValue);
Invoke(chklist, index);
}
return "";
}
oui je suis sûr à ce sujet. – user307524