Hola, acabo de encender mi computadora portátil y cuando apareció la página de "bienvenida", apareció una ventana emergente que decía que mi área de usuario no se podía mostrar porque estaba dañada o no tengo acceso de seguridad para acceder a ella. Entonces, ha aparecido un área predeterminada y todas mis imágenes, música, documentos, etc. no están en esta área predeterminada. Básicamente ha vuelto a su configuración de fábrica. Estoy pensando que es un virus (mi software de virus es 2005, así que está un poco anticuado). ¿Hay alguna manera de que pueda acceder a mi área nuevamente o se ha ido? Gracias

No tengo idea de si esto ayudará, pero instale Avast (es gratis y un buen protector de virus), ejecute un análisis y vea si eliminará el virus. Entonces podrá acceder a sus otras cosas. Espero eso ayude. De cualquier manera, no puede doler y tendrá un nuevo sistema de seguridad en su computadora portátil. También instale CCleaner (también gratuito) y limpiará totalmente su registro, Spybot también es bueno tener que mantener su computadora limpia y en funcionamiento. Pruébalo

¿Cuántas cuentas de usuario están configuradas en esta máquina? Si solo uno, entonces es posible que se haya corrompido. Puedes probar aquí.

Mapas de bits protegidos con hilo C # en el temporizador

Hola. Supongo que el programador de BC puede ayudarme con esto. Estoy trabajando en un motor de juego simple en C # usando GDI. Acabo de llegar al punto en el que debería poder cargar un objeto y hacer que se mueva por la pantalla. He agregado mi código de animación a una devolución de llamada del temporizador, y ahora no se compilará porque supongo que el mapa de bits y los objetos gráficos no son seguros para subprocesos. ¿Podrías ayudar? Soy bastante nuevo en multihilo. Creo que necesito bloquear bits o algo así, pero en realidad no necesito modificar los mapas de bits desde el interior del temporizador, solo renderizarlos. ¿Quizás conozca una mejor manera de estructurar esto? Aquí está el código para probar el motor: Aquí está el código del motor:

Hasta que aparezca BC, es posible que desee leer esto: //stackoverflow.com/questions/11623039/how-to-make-objects-threadsafe-on-cTambién: //stackoverflow.com/questions/17975884/c-sharp-variable-thread-safetyMás: //stackoverflow.com/questions/22229702/threadsafe-over-bitmap-in-c-sharp

No entiendo por qué no podría compilar. Los problemas de subprocesos como este generalmente provocan una InvalidOperationException en tiempo de ejecución. Si no se compila, emite errores de compilación. Sería útil saberlo. De todos modos, no deberías recurrir al procedimiento del temporizador de todos modos. El "motor" 2D de mi juego cargó todos los activos de mapa de bits al inicio. el constructor de mapa de bits que acepta un nombre de archivo no es confiable, por lo que vale la pena cargar datos de imagen, utilicé lo que se encuentra aquíBásicamente, en lugar de usar el archivo, leyó todo el archivo en un flujo de memoria y luego usó Image.FromStream (). No usó mapas de bits para los activos, ya que no era necesario cambiarlos. estaba en un hilo separado. Que se puede ver aquí(nota al margen, si lo estuviera escribiendo ahora, probablemente usaría un enfoque basado en la interfaz para "gamestates" en lugar de simplemente usar una enumeración y una declaración de cambio grande). El hilo separado no hace absolutamente ningún dibujo, simplemente realiza la lógica del juego. Sin embargo, cada cuadro también intentará invocar un repintado:
Código:
PicGame.Invoke ((MethodInvoker) (() => {PicGame.Invalidate (); PicGame.Update ();})); La invocación es necesaria porque el hilo GameProc () no está en el hilo UI. solo el subproceso de la interfaz de usuario puede llamar a los métodos de los controles Win Forms (de lo contrario, obtenemos la excepción InvalidOperationException- "Operación de subprocesos no válida" mencionada anteriormente o algo así). En este caso, simplemente invalida el PictureBox que se utiliza para mostrar el juego y lo obliga a actualizar. A su vez, esto hará que se llame al evento Paint de Picturebox, se llama en el hilo de la interfaz de usuario. Sin embargo, tanto el gameproc como la rutina de dibujo se bloquean en ciertas cosas para evitar que ambos accedan a las cosas simultáneamente, lo que podría causar problemas. Pinta a un backbuffer y luego ese backbuffer se ve atraído por el objeto Graphics proporcionado al evento (por ejemplo, Gráficos). Nunca usaría un Timer para este tipo de cosas, ya que los Timers son extremadamente poco confiables. Baso esto en haber usado Timers antes, y encontrar que no son confiables. Esto es especialmente cierto si está utilizando System.Windows.Forms.Timer.

Estás en lo correcto. Estaba siendo inexacto. Lo que quise decir es que tiene un error de tiempo de ejecución con un mensaje como el que describiste. Veo lo que dices, pero no entiendo por qué tu juego no solo se ejecuta a la velocidad máxima de la CPU si no estás usando un temporizador para actualizar tus cuadros. ¿Podría explicarme cómo debo hacer esto en lugar de usar un temporizador? Si conoce algún ejemplo de representación de mapas de bits utilizando GDI a una velocidad específica, sería útil. Echaré un vistazo al código de tu juego cuando tenga algo de tiempo.

Se ejecuta a toda velocidad de la CPU. Ese es el punto de no usar Timers. La lógica del juego se ejecuta tan rápido como sea posible, si va más rápido que la velocidad de fotogramas deseada, se interpolará; si es más lento, moverá objetos más rápido. Si el juego recibe ciclos de CPU depende del programador de Thread. Refiriéndome a mi juego (lo abrí por primera vez en quizás un año y medio ahora). Básicamente rastrea el FPS y si está por debajo de 30, todos los movimientos y cambios se escalarán adecuadamente; a 15 fps, por ejemplo, un objeto se moverá más rápido cada tic para mantenerse al día con lo que sería una velocidad normal. Esto evita que los objetos se muevan más lentamente, con el efecto secundario de causar movimientos bruscos (que también se atornillan con otras cosas como las pruebas de golpe, pero ese es otro tema). Un temporizador está diseñado para, como dice en la lata, algo que desea suceder a un ritmo repetitivo. Pero lo más importante es que ninguna implementación de Timer es particularmente estricta con respecto a esa tasa real. Toma sus 100 ms como una guía, no como una regla. Además, el uso de un temporizador introduce el tiempo de inactividad, que es lo que desea evitar. Debe ejecutarse lo más rápido posible para que la experiencia sea lo más fluida posible.

Entradas Populares