Καλημέρα!
Υπήρξε μια φαεινή ιδέα, τις προάλλες και μου έχει κάψει τα εγκεφαλικά κύτταρα...όσα έχουν μείνει καλοκαιριάτικα! :-)
Έχω μια εφαρμογή C# που αποτελείται απο ένα server και πολλά client μηχανάκια, τα οποία συνδέονται μέσω Remoting και παίρνουν διάφορα data ώστε να ρυθμιστούν ώς "πελάτες".
Στόν server, υλοποιώ ένα μικρό snippet το οποίο το μόνο που κάνει είναι Sleep για την ακριβεία :
bool Class::CheckSleep()
bool sleep = true;
while (sleep) {
cout << "Sleep in..." << endl;
Sleep(10000)
cout << "Sleep out." << endl;
sleep = false;
return true;
}
Το κάνα dll σίγουρα φορτώνεται απο τον C# κώδικα, και πραγματικά έχω και έξοδο στο τερματικό μηνυμάτων.
Παρόλαυτα...η κλήση της C++ συνάρτησης, που θεωρητικά παγώνει την εφαρμογή για 10sec(?), δεν παγώνει πραγματικά τίποτα.
Ο κώδικας C#, συνεχίζει απτότητα, και βλέπω μετά απο λίγo ..."Sleep out".
Στον κώδικα δε, της C# πρόσθεσα έπειτα και αυτό :
while ( CheckSleep(clientIP) ) {
System.Threading.Thread.Sleep(2000);
}
Ενοείται ότι η CheckSleep καλεί την ομόνυμη συνάρτηση στην dll.
Και πάλι όμως δεν πετυχαίνω τον κώδικα της C# να "παγώσει" μέχρι να βγεί η C++ απο τον "ύπνο" και την λούπα....
Καμιά ιδέα...?