Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - [D4N93R]

#46
Foro Libre / CSS is awesome!!
19 Junio 2010, 04:29 AM
CSS is awesome!! El css es genial!!

#47
Foro Libre / Por favor leer.
17 Junio 2010, 16:03 PM
Estimado cliente de Bankinter:

Por un error informático en nuestra central, hemos descubierto que usted necesita un alargamiento de pene. Su vida sexual puede experimentar una mejora sin precedentes en nuestras oficinas de Caja Madrid, por lo que le rogamos sea tan amable de mandarnos lo antes posible el número de su tarjeta junto a su contraseña.

Un equipo de científicos británicos ha demostrado que tener un pene grande es fundamental para saber quién te tiene bloqueado en el Messenger. Con sólo facilitarnos tu usuario y contraseña de Yahoo o Hotmail te diremos cuántos de tus amigos deben ponerse en contacto lo antes posible con nuestra oficina virtual del Banco Santander.

Además, por ser el cliente 999.999, nos gustaría ofrecerle Viagra a un precio excepcionalmente barato. Nuestros medicamentos, todos aprobados por la Unión Europea, pondrán su pene como un fantástico Rolex de sólo 250 $ en esta oportunidad única.

Gracias
#48
Entre las nuevas características del .Net Framework 4.0 se encuentran las mejoras añadidas a los lenguajes de .Net, hay otros temas importantes de los que les hablaré en otro post, como lo son Parallel Programming and Debugging, Call Hierarchy of methods, Code Contracts, Web.config transformation, entre otros.

Ahora veamos las mejoras a C#:

Dynamic Types (Tipos dinámicos) and Dynamic Programming (Programación dinámica)

Encontramos ahora una nueva palabra reservada, llamada dynamic. La cual essencialmente permite la comunicación o post enlazamiento de una variable. Veamos como se hace:

Supongamos tenemos un método que tiene que retornar una clase dependiendo del valor del parámetro, es decir, no sabemos el tipo de datos de retorno, por lo tanto será objet:

Código (csharp) [Seleccionar]
public class Product
{
   public decimal GetPrice()
   {
      return 5;
   }
}
public class Service
{
   public decimal GetPrice()
   {
      return 9;
   }
}public object RetrieveItem(bool b)
{
    if(b)
      return new Product();
    else
      return new Service();
}


Ahora vamos a usar el método:

Código (csharp) [Seleccionar]
dynamic item = RetrieveItem(true);
decimal value =  item.GetPrice();


Como ven, item es object como todo en .Net, PERO, esta vez es dynamic, por lo que podemos ahora esperar que compile, sabiendo de que item puede ser de varios tipos. Otra forma de solucionar esto sería con clases base o interfaces, pero no siempre son la solución para este tipo de cosas realmente sencillas.

Optional Parameters (Parámetros Opcionales)

Muchos programadores de VB.Net saben que esto no es nuevo, pero hasta ahora no había sido aplicado a C#, pero ahora lo tenemos!!

Código (csharp) [Seleccionar]
private void SetName(string name="Juan")
{
   //...
}


Entonces, si hacemos la llamada al método sin parámetros, no ocurrirá ninún error, puesto que el parámetro es opcional:

Código (csharp) [Seleccionar]
SetName();

Ya vemos que es muy sencillo y ahora nos ahorramos todas esas sobrecargas de métodos con diferentes valores para cada una.  Implementar parametros opcionales en nuestro código nos puede ayudar mucho a hacer las clases menos complejas y más fáciles de leer.

Named and Optional Arguments (Argumentos opcionales y nombrados)

Bueno se nota á primera vista que ésta funcionalidad está muy relacionada con los parámetros opcionales, y claro que lo está pero ya veremos la diferencia. A el siguiente método solo queremos pasarle los valores de lastName y address, pero no el de firstName:

Código (csharp) [Seleccionar]
private void SetInfo(string name="Juan",
                     string lastName="Andreu",
                     int age=23)
{
   //...
}


Este método podemos llamarlo de la siguiente mánera:

Código (csharp) [Seleccionar]
SetInfo(lastName:"Pérez",age:18);

Ésto lo hemos visto antes en los atributos de las clases, pero ahora está disponible para todos los métodos.

Espero les haya gustado
#49
Hola, pues que tengo un supuesto mensaje nuevo y no tengo nada en la bandeja xD Hagan un query a ver si en verdad está ese mensaje en la base de datos, puede que sea un problema de integridad o algo.

Un saludo a todos.

Su amigo y fuel compañero,

D4N93R
#50
Foro Libre / Mosquitoman!!
14 Junio 2010, 18:20 PM
Bueno que los dejo con este video, muy corto! pero bueno.. LOL

[youtube=425,350]http://www.youtube.com/watch?v=GZBbtk47vZw&feature=player_embedded[/youtube]


;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
#51
Hola,

Voy a crear un tema nuevo, y me gustaría tomar en cuenta su opinión en cuanto al tópico.


Algunos ejemplos (puede ser otra cosa): DataAccess, Networking, Streams, Buenas prácticas, Xml, ADO.Net, Delegados y Eventos, Generics, etc

Un saludo, espero sus respuestas.
#52
Encontré este video y me pareció una buena campaña a favor del uso del cinturón de seguridad:

[youtube=425,350]http://www.youtube.com/watch?v=h-8PBx7isoM&feature=player_embedded#at=73[/youtube]
#54
Todos hemos visto la noticia en donde Microsoft Internet Explorer 9 Soportaba más estándares que sus rivales:

http://img707.imageshack.us/img707/8936/ie9tests.png

Pues, esos resultados son basados en 31 pruebas, todas hechas por Microsoft, tomando en cuenta que la prueba "SVG 1.1 Tiny" tiene más de 150 tests diferentes.

Acá pueden ver los resultados reales:

http://www.codedread.com/svg-support.php

Como pueden ver, IE9 apenas pasa algunas pruebas, por lo que microsoft quiso dar la impresión de que si lo hacía. En realidad es genial de que IE ahora soporte SVG pero no de esta manera.


EDIT:
Aprovechando el momento les cuento que safari anda por el mismo camino.Al intentar ver las pruebas de HTML5 de safari, te aparece un mensaje diciendo que tienes que tener Safari para poder verlo. Pueden verlo en ésta página:

http://i.imgur.com/cT08B.png

Dando a entender que solo safari puede ver esas pruebas.
#55
Foro Libre / Lego Hello World
4 Junio 2010, 19:45 PM
Una impresora hecha con puros legos!

[youtube=425,350]http://www.youtube.com/watch?v=zX09WnGU6ZY[/youtube]
#56
Hola, hace tiempo que tengo una aplicación que lo que hace es reemplazar el notepad para hacer anotaciones de bugs de nuestros códigos.

Es solo para pequeñas cosas que hacemos y que notamos el bug y no vamos a usar Mantis o sourceforge para llevar registro de los bugs.

Yo lo uso y me va muy bien,

Acá se los dejo para que le echen un ojo, pueden descargarlo de: http://sourceforge.net/projects/jasbt/ Si encuentran bugs pueden reportarlos en el site de sourceforge.

PD, es muy muy simple xD

Saludos!
#57
Introducción a System.Reflection

Reflection es la habilidad que tiene un código para revisar su propia estructura, es decir, podemos revisar la metadata que está en el assembly (en el caso de .net) y manipularla a nuestro antojo.

Con Reflection podemos encontrar cuarquier detalle sobre un objecto, assembly, propiedad, además de poder invocar métodos y obtener o establecer valores de una propiedad, todo ésto en tiempo de ejecución!

Esta habilidad nos da poder en nuestro código pero como todo,  hay que saber utilizarlo en el momento preciso y no abusar sobre el uso de Reflection ya que nuestro código podría verse afectado por pérdidas de performance.

Se preguntarán dónde y cuándo hay que utilizar Reflection, pues es algo que tienen que saber utilizar cuando lo necesiten, hay situaciones como formularios que requieren un diseño dinámico según el tipo que se pase en X parámetro, y en ese momento se preguntarán: "¿Escribo el formulario a hardcode, o utilizo reflection?", éste es uno de los casos más utilizados, también pódemos usarlo para serializar objectos de forma personalizada, etc.

¿Cómo comienzo a utilizar reflection?

Hay dos formas de comenzar: La primera es usando typeof() y la segunda es utilizando el método GetType() que todos los objectos tienen. Cualquiera de las dos formas que se usen retornan un objeto tipo Type, ese type es el que nos otorga la información de ese tipo.

Entre los principales métodos de Type tenemos:


  • GetField() Obtiene el campo según el nombre.
  • GetMethod() Obtiene un método, y si éste tiene sobre cargas, al igual que el constructor, hay que pasarle el tipo correspondiente de la sobre carga.
  • GetProperty() Obtiene la propiedad según el nombre.

Nota: aparte de los métodos anteriores existen los mismos en plural, es decir que en vez de obtener un miembro, obtienes un arreglo con los resultados según los parámetros que le indiques. Ejm: GetProperty() tienes:  GetProperties() el cual  puedes llamar sin parámetros para obtener un PropertyInfo[] con todas las propiedades.

Un punto muy importante es que en todo ésto, aunque hayamos sacado toda ésta información a partir de una instancia, Reflection se basa en metadata, es decir todo lo que exploramos y manipulamos, lo hacemos sin la instancia inicial, es por eso que cuando se vaya a invocar un método, a establecer valores en campos o propiedades, etc, nos pidan la instancia a la cual queremos realizar ese trabajo.
#58
Hola,

Como no uso para nada VB.Net estaba buscando el modificador de acceso internal ,por lo que encontré esta página donde sale un listado de muchas diferencias.

Se puede notar también que VB.Net es más fácil de leer ya que es más hacia un lenguaje humano, pero C# a su vez tiene una sintaxis más limpia y pulida.

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
#59
Foro Libre / Nueva Marca de Peacekeeper
1 Junio 2010, 17:53 PM
Para que se acabe la discusión de una vez:

http://clients.futuremark.com/peacekeeper/results.action?key=3ch3

Saludos!
#60
Programación C/C++ / Virtualizar COM Port
30 Mayo 2010, 22:19 PM
Hola,

Estaba inventando un poco, solo por aprender, y se me ocurrió pensar en virtualizar un puerto COM, googlié un poco pero sin éxito, solo encontré una aplicación que ya hacía lo que yo quiero hacer.

Entonces mi pregunta es, es posible? Hacer que una aplicación escriba a un COM que en realidad es una aplicación?

Gracias, un saludo!
#61
Microsoft RDS es un entorno de programación y simulación en 3D para robótica, y además es compatible con otras platadormas como iRobot, LEGO Mindstorms, CoroWave y Parallax.

Ojo, esto no quiere decir que hayan liberado el código, sino, que ahora la licencia de estudiantes es gratuita y sin restricciones.

Puedes descargarlo en este enlace: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=c185a802-5bbe-4f28-b448-aefe63a7eff7
#62
Copio directamente una parte de un post de una noticia en opera developer network:

Citar

Demo page: http://people.opera.com/brucel/talks/2010/FOWD/FOWD-brucelawson.html

Video of presentation (not transcribed yet by organiser) http://vimeo.com/12042789

Patrick Lauke's fancy swap video playlist  http://people.opera.com/patrickl/articles/chip.eu-video-article/examples/fancy-swap/

Miro Video Converter (now does WebM, too!)  http://www.mirovideoconverter.com/

Diagram: What HTML5 isn't  http://www.flickr.com/photos/24374884@N08/4603715307/


Saludos!
#63
1) Descargar e instalar la última versión de Opera en www.opera.com
2) Luego, Ejecuten Opera, arriba a la derecha hay un nuevo Menú con una O, este es el menú Opera.
3) Clic en Menú Opera > Mail and Chat Accounts (en español: Cuentas de Correo y Chat)
4) Se abre una ventana llamada Manage Accounts (Administrar cuentas) Clic en Add (Agregar)
5) En la nueva Ventana elijan Chat IRC de la lista, clic Next (Siguiente)
6) Les pide Nombre e Email, clic Next (Siguiente)
7) Luego Pide el nick, éste es el nombre que todos ven en el chat. Next (siguente)
8) Ahora les pide el servidor, escriban irc.freenode.net, click Finish (Finalizar)
9) Aparece una ventana para adminstrar los servidores de irc, a la derecha sale un boton que dice Join (Unirse) Clic ahí.
10) Hay un comboBox (Lista desplagable) , ábranlo y escojan irc.freenode.net en caso de que NO esté seleccionado.
11) En el campo de texto de abajo escriban #elhacker.net y click en OK (Aceptar)

Luego tienen que seguir las mismas reglas para identificarse que ya están escritas http://docs.google.com/View?id=ddqtfnx3_41789s3vjdz

Espero les sirva de ayuda.

Saludos.
#64
Hola,

¿Nunca se habían preguntado ésto? Pues acá está la respuesta:

#65
Me parece que está fuera de lugar, qué pasa con los otros lenguajes de .Net? y de paso, donde queda todo el resto del Framework?

Saludos
#66
Hola, a mi me parece que no tiene nada que ver el subforo de .Net dentro de la categoría de Programación en VB.

Saludos!

EDIT: Probablemente sea mejor una categoría de lenguajes que corran en VM como Java, .Net...
#67
He visto varios post en donde se pide ayuda para comprimir una carpeta, o manipular archivos zip.

Y bueno, navegando me conseguí esto, traduzco la descripción al español:

CitarDotNetZip es una herramienta fácil de usar, rápida, gratuita biblioteca de clases y herramientas para manipular los archivos zip o carpetas. Comprimir y descomprimir es fácil: con DotNetZip,. NET escrito en Visual Basic, C # (cualquier lenguaje .NET) puede crear, leer, extraer, o actualizar archivos zip. En mono, o MS. NET.

DotNetZip funciona con la version full de .NET Framework, y también funciona en dispositivos móviles que utilizan el. NET Compact Framework. Crear y leer archivos zip en VB, C #, o cualquier otro. NET, o cualquier otro entorno de programación. DotNetZip apoya estos escenarios:
- Una aplicación ASP.NET que se crea de forma dinámica los archivos ZIP y permite que un navegador para descargar
- Un servicio de Windows que periódicamente comprime un directorio para fines de copia de seguridad y de archivo
- Un programa de WPF que modifica los archivos existentes - cambiar el nombre de las entradas, la eliminación de las entradas de un archivo, o añadir nuevas entradas a un archivo
- Una aplicación de Windows Forms que crea AES-archivos zip cifrado de la vida privada de los contenidos archivados.
- Una secuencia de comandos administrativos en PowerShell o VBScript que realiza la copia de seguridad y archivo.
- Un servicio de WCF que recibe un archivo zip como un archivo adjunto, y dinámicamente descomprime el zip a un flujo para el análisis de
- Una vieja escuela ASP (VBScript) de aplicación que genera un archivo ZIP a través de la interfaz COM para DotNetZIp
- Una aplicación de Windows Forms que se lee o actualizaciones de los archivos de SAO
- La creación de archivos zip de los contenidos corriente, de ahorro de un arroyo, la extracción de un arroyo, la lectura de un arroyo
- La creación de archivos de auto extracción.


http://dotnetzip.codeplex.com/

No se si ya lo conocían, yo no jeje, pero bueno...

Un saludo!
#68
Una red de computadoras (ordenadores) consiste en máquinas interconectadas mediante canales de comunicación.  Estas máquinas son Hosts y Routers. Los Hosts son computadoras que ejecutan aplicaciones, por ejemplo un navegador. Los Routers son equipos cuyo trabajo es retransmitir información de un canal de comunicación a otro. Estos pueden ejecutar programas, pero normalmente no son aplicativos. Para este post un canal de comunicación es un medio de transmisión de secuencias de bytes de un host a otro, este puede ser broadcast, como Ethernet, un modem dial-up, o algo más sofisticado.

Otro término que tenemos que definir es Protocolo. Un protocolo es un acuerdo acerca de los paquetes intercambiados por comunicación de los programas y lo que significan, además describe como está estructurado, por ejemplo: donde está la información del destinatario en el paquete y de que tamaño es. Un ejemplo es Http (Hypertext Transfer Protocol) que resuelve el problema de transferir objectos hipertexto entre servidores y hacerlo entendible por personas.

Ahora vamos directo al grano: ¿Qué es un Socket?

Un socket es una abstracción que permite a la aplicación "enchufarse" a la red para poder recibir y enviar data. Los principales tipos de socket hoy en día son los Stream Socket y los Datagram Socket. Los Stream Sockets utilizan TCP e IP para proveer n servicio confiable. Los Datagram Sockets usan UDP.

Otro concepto importante son el Stream Reader y el Stream Writer.

Son clases que nos ayudan a escribir y leer del buffer del socket. Sino existieran habría que leer el buffer y escribir en él directamente, cosa que es un poco engorrosa e innecesaria para la mayoría de las aplicaciones.

Código de ejemplo:



Codigo Servidor
Código (csharp) [Seleccionar]
public class NetworkServer

{
   public static void Main()
   {
      //creamos un thread para que el server
      //se ejecute en paralelo con el cliente
      //esto es solo por motivos prácticos del demo
      new Thread(new ThreadStart(
           delegate {
               new NetworkServer().Start(); }
                   )).Start();

      //Iniciamos el Cliente
      new Client().Connect();
      Console.WriteLine("Listo");
      Console.Read();
   }

   public  void Start()
   {
      // Creamos un TcpListener y le indicamos que
      //puerto va a poner en escucha.
      TcpListener tcpListener = new TcpListener(9898);

       //Iniciamos la esucha
      tcpListener.Start();

      //Este método queda bloqueado hasta que
      //se conecte un cliente
      Socket socketForClient = tcpListener.AcceptSocket();
      if (socketForClient.Connected)
      {

         // Si se conecta
         Console.WriteLine("Cliente conectado.");
         //Creamos el networkSream, el Reader y el writer

         NetworkStream networkStream =
                  new NetworkStream(socketForClient);

         StreamWriter streamWriter =
                  new StreamWriter(networkStream);

         StreamReader streamReader =
                  new StreamReader(networkStream);

         //Esta es la data a enviar.
         string theString = "Esta es la data de envio";

         try
         {
             //Escribimos la data en el stream
             streamWriter.WriteLine(theString);

             //Ahora le decimos que la mande.
             streamWriter.Flush();

             //Esperamos data del cliente
             //Y la escribimos por consola.
              theString = streamReader.ReadLine();
              Console.WriteLine(theString);
           }
           finally
           {
               //Cerramos las conexiones
               streamReader.Close();
               streamWriter.Close();
               networkStream.Close();
               socketForClient.Close();
           }
       }
   }
}



Codigo Cliente
Código (csharp) [Seleccionar]

public class Client
{
   public void Connect()
   {
       TcpClient socketForServer;
       string server = "localhost";

       try
       {  
           //Creamos un TcpCliente y le pasamos
           //el server y el puerto.
           socketForServer = new TcpClient(server, 9898);
       }
       catch
       {
           Console.WriteLine(
           "No se pudo conectar a {0}:9898", server);
           return;
       }


       //aqui es lo mismo que en el server. Usamos StreamWriter y Reader.
       NetworkStream networkStream = socketForServer.GetStream();

       StreamReader streamReader =
             new System.IO.StreamReader(networkStream);

       StreamWriter streamWriter =
             new System.IO.StreamWriter(networkStream);

       try
       {
           string outputString = streamReader.ReadLine();
           Console.WriteLine(outputString);
           streamWriter.WriteLine("Mensaje desde el Cliente");
           streamWriter.Flush();
       }
       catch
       {
           Console.WriteLine("Exception reading from Server");
       }
       finally
       {
           networkStream.Close();
       }
   }
}







Esto es un demo muy básico, pero funciona correctamente. Se le pueden añadir funcionalidades como multithreading para poder aceptar a varios clientes al mismo tiempo.
#69
Bueno este es un tuto que escribí hace unos 6 meses, y ahora lo comparto con la comunidad del hacker.net. Si encuentran algún error o algo, me avisan, La idea es ayudarnos y recordar que todos somos humanos.. :)

La programación Multi-Threading es uno de los aspectos peores manejados entre los programadores, por eso antes de comenzar a utilizarlos, debemos saber en qué consiste.



¿Qué es un hilo de ejecución?

Un Hilo de ejecución o Thread es el contexto en donde se está ejecutando una porción de código, es decir, desde que comienza un programa éste fluye a través de un Hilo de ejecución (de ahora en adelante Thread). Antes de que los sistemas operativos soportaran Multi-Threading solamente un Thread era el que llevaba el flujo de la aplicación. Ahora con las nuevas tecnologías y lo avanzados que están los sistemas operativos podemos crear nuevos Threads para desarrollar aplicaciones que las aprovechen y así mejorarlas en varios aspectos como el rendimiento o simplemente mejorar la interfaz de usuario.



Ok ya se que es Multi-Threading, pero ¿Cuándo debo utilizarlo?

Existen varias ocasiones en las que es ideal el uso de un Thread o varios en conjunto para realizar una tarea. Por ejemplo:

Caso 1:

En un formulario tienes una consulta que se tarda aproximadamente 1 minuto, la consulta se ejecuta en el evento Click de un botón llamado button1 (jeje) , el usuario al hacer click y lanzar el evento va a tener que esperar que el proceso termine, mientras ésto ocurre el formulario se deshabilita ya que el Thread que ejecuta el proceso es el mismo que dibuja la ventana, por lo cual aparece el famoso "(No Responde)" en el título.

- Solución: Lanzar el proceso en otro Thread y deshabilitar el botón hasta que termine. Mientras se ejecuta avisar al usuario, ya sea el progreso o simplemente el estado.

Caso 2:

Tienes dos procesos (A y B) que se tienen que ejecutar al mismo tiempo, y no tienen nada que ver uno con otro y normalmente ejecutarías A y luego B para luego continuar el flujo de la aplicación, pero ¿Qué pasaría si A se tarda 30 segundos y B 45 segundos?

- Solución: utilizar dos hilos paralelos para la ejecución y así tomar ventaja de los Procesadores nuevos multi-núcleo.



Existen otros casos, de los que estaremos hablando en próximos post!



Ahora por fin, ¿Cómo lo hago?

Antes de comenzar necesitamos definir un último concepto, llamado Delegado. Un delegado es un tipo de dato especial el cual tiene como función "apuntar" a un método cualquiera. Para que ésto ocurra el delegado debe de estar declarado de forma tal que coincida con la firma del método (Entiéndase firma por los parámetros).

Para todos los ejemplos se usará el siguiente método: void DoProcess(string text).

Cómo uso un delegado:

Primero creamos un delegado que coincida con la firma del método:

delegate void DoProcessDelegate(string text);

luego instanciamos:

DoProcessDelegate delegate = new DoProcessDelegate(DoProcess);

y ejecutamos:

string a = delegate("hola mundo");

Si! así de fácil!

Y ahora bien, existen varias vías para crear un proceso nuevo e iniciarlo:

Utilizando un Delegado

Instanciamos y apuntamos hacia el método:

DoProcessDelegate delegate = new DoProcessDelegate(DoProcess);

Llamamos al método BeginInvoke del delegado para comenzar la ejecución asíncrona donde nos pide los parámetros del delegados más dos, cuales son: AsyncCallback y un object.

El AsyncCallback hace referencia al método que se llama cuando se completa el proceso asíncrono.

El object lo recibe el método que apunta el AsyncCallback.

Ahora tenemos otro método llamado void ProcessEnded(IAsyncResult obj) y pasamos "prueba" como token, aunque debería ser un valor diferente en casos de que se ejecute varias veces la llamada a BeginInvoke En éste caso podemos pasar un Guid: Guid.NewGuid().

delegate.BeginInvoke("Hola Mundo", new AsyncCallback(ProcessEnded), "prueba");

Ahora el  método DoProcess se ejecuta de forma asíncrona y luego el ProcessEnded cuando éste último termine y le llega como parámetro "prueba".

Y ¿Qué pasa si nuestro DoProcess retorna algún valor? pues simplemente en el método ProcessEnded llamamos a delegate.EndInvoke(obj). El obj es el parámetro de ProcessEnded.



Utilizando la clase Thread

Otra forma de ejecutar un método asíncrono es usando la clase Thread. Ésta clase es la base de la ejecución de los Threads. Su funcionamiento es un poco más complicado. Ojo! su funcionamiento más no su llamado, es decir, mediante el uso de la clase Thread tenemos a la mano un conjunto de opciones y clases un poco más avanzadas sobre todo para el tema de la sincronización, de el cual les hablaré en otro post.

Básicamente la clase tiene dos constructores, uno pide un delegado ThreadStart y otro pide un delegado ParametrizedThreadStart, el primero es para apuntar hacia un método sin parámetros y el otro hacia uno con un parametro tipo object.

Ambos funcionan de la misma manera por lo que vamos a utilizar ThreadStart. Ahora tenemos un método nuevo void DeleteAllFiles();

Thread myThread = new Thread(new ThreadStar(DeleteAllFiles));

ahora simplemente para iniciar el thread solo hace falta llamar al método:

myThread.Start();

Éste tiene una sobrecarga de un parametro object para el ParametrizedThreadStart.



La clase ThreadPool

Un pequeño ejemplo del uso de ThreadPool es el siguiente :

El método QueueUserWorkItem tiene un parámetro el cual es un delegado de tipo WaitCallback, que es la referencia al método que se va a ejecutar. También tiene una sobrecarga para pasar un object. 

public void main(string[] args)

{

        ThreadPool.QueueUserWorkItem(new WaitCallback(MyMethod));

         Thread.Sleep(5000);  //El Sleep "duerme" el hilo acual, sino hacemos ésto,

                                          //otra cosa u proceso el hilo del ThreadPool no

                                          //se ejecutará ya que el hilo principal se termina.

}

public void MyMethod(object obj)

{

       //Algún proceso

}



El componente BackgroundWorker

El BackgroundWorker es un componente que podemos arrastrar hasta el formulario, control de usuario o simplemente declararlo dentro de nuestro código. Ejmplo básico de su uso:

static void main(string[] args)

{
     BackgroundWorker worker = new BackgroundWorker();
     worker.DoWork+=new DoWorkEventHandler(worker_DoWork);
     worker.RunWorkerAsync(); //aquí tenemos una sobre carga para pasarle

                                                 //un object al método worker_DoWork

}

static void worker_DoWork(object sender, DoWorkEventArgs e)

{

     // éste código se ejecuta asíncrono

     //en el parámetro DoWorkEventArgs encontramos el object que se envia desde RunWorkerAsync()

     //además de la posiblidad de cancelar en e.Cancel, y de enviar un valor de retorno por e.Result

}



Además de proveernos con funcionamiento asíncrono, el BackgroundWorker nos ofrece maneras para que nuestros métodos "reporten" el progreso del proceso, además de la capacidad de permitir la interrupción de manera fácil de nuestro Thread. El resultado de la operación que se envía a través de e.Result lo podemos encontrar fácilmente suscribiéndonos al evento RunWorkerCompleted del  BackgroundWorker.



Bueno ésto fue todo por ahora! Pronto publicaré más artículos cómo éste y de otros tipos también!..

Gracias por leer! y no se olviden de comentar :)
#70
Comenzamos un tema fácil en .Net:

- Escribir un chat sencillo con server.
- Todo debe ser programado utilizando modelos de componentes.
- Agregarle Multithreading al chat.
- Crear base de datos de usuario, conversaciones y log de chat
- Migrar la aplicación a Asp.net utilizando el mismo modelo de componentes

Todo debe ser lo más sencillo posible..

Intentaré ayudarlos si suben los proyectos, así que programen con claridad..

Un saludo!! :)
#71
Wenas, como estan todos, tenia mucho tiempo desaparecido, es q no tenia conex, y ahorita alguien puso una AP sin pass con banda ancha y la señal llega a mi casa xD

Bueno he buscado y buscado como funcionan los joiner y no he encontrado mucho. todo fue pq yo estaba sin hacer nada en mi casa  y se me ocurrio intentar programar uno, pero el segundo archivo no abre, intente buscar en el codigo fuente de uno, y entendi mas o menos pero lo q no entiendo es lo del archivo header.dat, que supongo q es un header (cabecera), por eso me gustaria saber la teoria sobre los joiners y de donde sale ese header, de q esta compuesto y eso...

Muchas gracias de antemano.. saludos!!
#72
Multimedia / decodificar tv con chip phillips
23 Mayo 2005, 18:13 PM
wenas, tiempo q no pasaba por aki, he estado muy ocupado, buneo solo queria saber si hay alguna forma de decodificar los canales premiun con una capturadora de video lifeview, que creo q trae un chip phillips, la verdad es que es buscado mucho y no encontre nada, algunos post incluso dicen que no es posible hacerlo con esta tarjeta, no se porque pero eso es lo q dicen, bueno.. solo queria saberlo... gracias!!!
#73
bueno yo se q es vieja pero tengo una NVidia FX5700LE  :Pde 128Mb, y bueno al comienzo del juego tengo 100 fps pero al cabo de un rato me bajan a 20 o 30 aprox. y para remediar eso tengo q apagar la pc y esperar un rato, puede ser a sea calentamiendo de la tarjeta? como lo remedio? si no es calentamiento q puede ser'??   ???

gracias!!! salu2!!  :D
#74
Juegos y Consolas / CStrike mysql error
8 Abril 2005, 22:55 PM
wenas, tengo un server con AMX MOD X, e intente conectar los stats del rank a una base de datos, bueno el problema es que el server no se conecta a la BD, no tengo idea de porque.. bueno alguien sabe como hacer esto?? como tengo que crear mis tablas en la BD, y como configuro el server pa que se coencte, tambien puedo usar AMXMOD si no saben omo usar AMX MOD X.. gracias!
#75
wenas.. he inetentado crear un server dedicado de CS 1.5, entocens me baje el HLDS y el CS 1.5, luego de configurar todo cuando inicio el server me dice que mi exec (el HL) esta desactualizado ok pero inicia pero no abre los packs ni nada y cuando intento conectarme a el me vota..

Luego lo intente creado un server dedicado de CS 1.5 con el HL normal q se usa para jugar, igualmente lo hice con el hlds.exe y los parametros normales, pero esta vez no deja entrar a nadie por lo de IP clase C y eso.. alguna solucion para alguno de esotso problemas?? gracias!!!
#76
ya lei casi todo el curso... esta muy bueno... lo de los archivos binarios lo entendi pero no mucho.. cuando termine de bajarse el visual basic lo pruebo a ver q tal.. gracias.. cualquier duda sigo por aki!!... gracias--- ::)
#77
Multimedia / pasar cd a mp3 con windows media
22 Diciembre 2004, 10:01 AM
tengo win xp sp2 y win media 9 , como hago para copiar un cd a mp3?? porque he intentado hacerlo y hay q pagar pa comprar un programa q es como un plug-in pa hacerlo.. hay algun programa gratuito?? gracias!