Estoy escribiendo una aplicación de catalogación que analiza y extrae información de los archivos y almacena la información de cada archivo en una instancia de objeto. Además de los datos extraídos del archivo, los objetos también tienen propiedades de metadatos adicionales (autor, etiquetas, notas, etc.) que luego se almacenan en un archivo XML separado.¿Es seguro permitir que dos subprocesos editen diferentes propiedades del mismo objeto al mismo tiempo?
Extraer los datos de los archivos es un proceso lento, así que lo tengo en ejecución en un hilo separado. Las propiedades extraídas de los archivos solo se obtendrán de los archivos y, por lo tanto, tendrán los atributos [Solo lectura] para evitar que el usuario los edite. Las propiedades de metadatos, por otro lado, solo las llena el usuario y, por lo tanto, no son de solo lectura. Permitiré al usuario ver/editar estos objetos a través de un PropertyGrid.
Entonces, si el proceso de extracción se ejecuta en un subproceso que rellena las propiedades de archivo de un objeto, ¿hay algún peligro al permitir que el usuario edite las propiedades de metadatos al mismo tiempo? Estoy tratando de decidir si debo usar una interfaz modal que evite que el usuario haga algo hasta que se complete/cancele la extracción, o una interfaz no modal que les permita seguir trabajando mientras se ejecuta la extracción.
Así que si el hilo de extracción actualizó las propiedades del objeto que el usuario estaba viendo actualmente en el propertygrid no se actualizaría hasta que el usuario volviera a seleccionar el objeto en la cuadrícula de la propiedad? No tendría un problema con esto. Estoy más preocupado por el programa de bloqueo, o datos corruptos. Todos los pro perties son tipos primitivos como bool, int, double y string. –
Lo estoy planteando debido a bloqueos potenciales, pero se aplica principalmente a tipos más complejos.En realidad, no se garantiza que un 'doble' se escriba atómico, por lo que podría mostrarse incorrecto si las lecturas y escrituras coinciden. Consulte la precaución en: http://msdn.microsoft.com/en-us/library/system.double.aspx –
Supongo que es muy poco probable que un usuario pueda seleccionar un objeto exactamente al mismo tiempo que se escriben las propiedades. Incluso si lo hicieran, ¿no afectaría la forma en que se escribe el valor correcto? Si el usuario fue de alguna manera muy desafortunado y terminó viendo un valor doble medio escrito. ¿No verían simplemente el valor correcto la próxima vez que seleccionen el objeto? Como solo estoy mostrando los valores en lugar de depender de ellos para otra lógica en el programa, no parece que los bloqueos sean esenciales. –