Pour la simple raison que si tes ressources sont crées en pool Default, tu dois les détruire puis les recréer en cas de DeviceLost.
Donc en fait normalement, au moment ou tu appelle ton Device.Present(), tu dois faire avant un CheckCooperativeLevel, et en cas de DeviceLostException, libérer les ressources, les recréer.
Exemple :
Code :
- try
- {
- bool bDeviceOk = this.dDevice.CheckCooperativeLevel();
- this.dDevice.Present();
- }
- catch (DeviceNotResetException)
- {
- // Reset des ressources
- this.dDevice.Reset(this.ppPresentParams);
- // Recréation des ressources
- }
|
Ce code est un peu degueu, mais bon , c'est 10h30 du mat, tete dans le cul toussa
PS : Les ressources en Pool.Managed n'ont pas besoin d'être virées puis reinitialisées.
PS2: En fait je me demande si la verif du CooperativeLevel sers vraiment, vu que en theorie c'est le Present() qui va thrower l'exception DeviceNotReset ![[:pingouino] [:pingouino]](https://forum-images.hardware.fr/images/perso/pingouino.gif)