Hey, j'ai écrit une application dans laquelle j'ai besoin de créer un thread pour effectuer des tâches en arrière-plan pendant le chargement de l'interface graphique. Cependant, peu importe que je ne je peux trouver un moyen de contourner cette erreur:Vala Threading: l'invocation de la méthode void n'est pas autorisée en tant qu'expression
error: invocation of void method not allowed as expression
Thread<void> thread = new Thread<void>.try("Conntections Thread.", devices_online(listmodel));
La ligne en question est la création d'un nouveau thread qui appelle la méthode « devices_online ».
Le code complet qui est effectué est:
try {
Thread<void> thread = new Thread<void>.try("Conntections Thread.", devices_online(listmodel));
}catch(Error thread_error){
//console print thread error message
stdout.printf("%s", thread_error.message);
}
Et méthode est:
private void devices_online(Gtk.ListStore listmodel){
//clear the listview
listmodel.clear();
//list of devices returned after connection check
string[] devices = list_devices();
//loop through the devices getting the data and adding the device
//to the listview GUI
foreach (var device in devices) {
string name = get_data("name", device);
string ping = get_data("ping", device);
listmodel.append (out iter);
listmodel.set (iter, 0, name, 1, device, 2, ping);
}
}
Ive fait tellement googleing mais Vala est pas exactement la langue la plus populaire. De l'aide?
Merci pour la réponse. J'ai essayé votre correctif et bien qu'il ait vomi quelques erreurs, j'ai pu contourner ces erreurs en procédant comme suit: Erreur: 'void 'n'est pas un argument de type générique pris en charge, utilisez?' à des types de valeur de boîte Correction: 'Thread thread = new Thread .try (" Conntections Thread. ",() => {devices_online (listmodel); return null;});' –