|
222
|
Programación / .NET (C#, VB.NET, ASP) / Re: Cual es la forma más simple de obtener el tamaño de una carpeta?
|
en: 14 Enero 2013, 02:53 am
|
¿Cuando te refieres a "rápida" lo dices por performance? Hasta donde tengo entendido el tamaño no es una de las propiedades de una carpeta, por eso no aparece en el explorer, y por esto el DirectoryInfo no contiene la información, por lo que la alternativa es sumar el tamaño de todos los archivos de manera recursiva o no. El tema es que hay que iterar los directorios y archivos porque si bien lo siguiente funciona, algunas veces se obtiene un UnauthorizedAccessException por los subdirectorios DirectoryInfo directoryInfo = new DirectoryInfo (@"C:\Program Files (x86)");long size = directoryInfo.GetFiles("*", SearchOption.AllDirectories).Sum(f => f.Length);
Saludos
|
|
|
223
|
Programación / .NET (C#, VB.NET, ASP) / Re: ¿que técnica asíncrona debo usar?
|
en: 14 Enero 2013, 00:04 am
|
Me he asustado un poco con lo último de los dibujos con GDI+ Por lo que entiendo, el problema sería que el form esta recibiendo más datos de los que puede procesar/dibujar no? Tal vez lo he entendido mal, pero en este caso, por más que se ejecute en otro hilo seguirá existiendo el cuello de botella Saludos
|
|
|
225
|
Programación / .NET (C#, VB.NET, ASP) / Re: dudas visual basic 2012
|
en: 13 Enero 2013, 23:40 pm
|
Por desgracia, las aplicaciones "Modern UI Syle" (antes Metro Style) están limitadas a Windows 8 y RT (tablets).
En lo que respecta a su distribución, para Windows 8 puedes generar instaladores para distribuir por fuera del market, para Win RT solo es posible hacerlo por medio de este.
Saludos
|
|
|
226
|
Programación / .NET (C#, VB.NET, ASP) / Re: [APORTE] Snippets !! (Posteen aquí sus snippets)
|
en: 13 Enero 2013, 23:29 pm
|
Bueno, lo siguiente son sugerencias, críticas o comentarios sobre algunos de los snippets que has puesto en el post, así como algo más genérico sobre como estructuras tus métodos o funciones, y el código en general. - Es aconsejable declarar el tipo de retorno de las funciones en su declaración. Para alguien que no tiene claro el objetivo de una función es mucho más legible hacerlo de este modo, de lo contrario hay que revisar el código de la función en busca de los Return para darse cuenta de que la función retorna un booleano por ejemplo.
Private Function Funcion() As Boolean
- Función Attrib. Ya que estás creando una función que te abstrae de verificar la existencia de un archivo y asignar atributos, tal vez lo mejor sería que la función reciba una lista de atributos en lugar de un atributo global. Es decir, en este caso al utilizar tu función es necesario pasar la suma de los atributos para que asigne varios (como en la función original), pero por que no abstraerse un poco más y olvidarse de la suma?
Private Function Attrib (ByVal File As String, ByVal Attributes As List (Of System. IO. FileAttributes)) As Boolean Try FileSystem. SetAttr(File, Attributes. Select(Function(a ) DirectCast (a, Integer)). Sum()) Return True ' File was modified OK Catch ex As Exception ' MsgBox(ex.Message) Return False ' File can't be modified maybe because User Permissions End Try Else Return Nothing ' File doesn't exist End If End Function
- "Controlar el mismo evento para varios controles". No es aconsejable tener un solo método con condiciones para cada control por separado, lo recomendado es tener un método por evento. Si necesitas realizar algo en específico para un control en especial, entonces asigna un método diferente al control.
- Función ConvertToDiscSize. Si debes de pasar un string a una función, para luego tomar una decisión según se trate de un string u otro, debes de plantearte declarar un enumerador (esto mismo es aplicable a otras de tus funciones). Por otra parte, tampoco es recomendable tener todos los valores hardcodeados en un método, además de que estás repitiendo mucho código. A continuación una variante de la función reestructrada;
#Region " Convert To Disc Size function" Private Function ConvertToDiscSize(ByVal fileSize As Double, ByVal fileKindSize As MagnitudeType, ByVal to_DiscKindCapacity As DiscType) As Double Dim size As Double = GetSize(to_DiscKindCapacity) If (size < 0) Then Throw New ArgumentException("Tamaño de disco no localizado") Return fileSize * DirectCast(fileKindSize, Integer) / size End Function Enum MagnitudeType Bytes = 1 KB = 1024 MB = 1048576 GB = 1073741824 End Enum Enum DiscType CD CD800 CD900 DVD DVD_DL BR BR_DL BR_3L BR_4L BR_MD BR_MD_DL End Enum Private Function GetSize(ByVal discType As DiscType) As Double Select Case discType Case DiscType.CD Return 737280000 ' CD Standard Case DiscType.CD800 Return 829440393.216 ' CD 800 MB Case DiscType.CD900 Return 912383803.392 ' CD 900 MB Case DiscType.DVD Return 4700000000 ' DVD Standard (DVD5 Case DiscType.DVD_DL Return 8500000000 ' DVD Double Layer (DVD9) Case DiscType.BR Return 25025314816 ' BluRay Standard Case DiscType.BR_DL Return 50050629632 ' BluRay Double Layer Case DiscType.BR_3L Return 100103356416 ' BluRay x3 Layers Case DiscType.BR_4L Return 128001769472 ' BluRay x4 Layers Case DiscType.BR_MD Return 7791181824 ' BluRay MiniDisc Standard Case DiscType.BR_MD_DL Return 15582363648 ' BluRay MiniDisc Double Layer Case Else Return -1 ' Por si se declara un nuevo valor en el enumerador sin especificar tamaño End Select End Function #End Region
Creo que por el momento es todo lo que se me ocurre, en otro momento vuelvo a mirar Saludos
|
|
|
227
|
Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda sobre argumentos
|
en: 13 Enero 2013, 19:20 pm
|
Otra alternativa es utilizar generics, pero tampoco aplica para el caso, si vas a utilizar generics no deberías de estar verificando el tipo luego. Pero digo yo que no seré el primero en tener este problemilla xD... ¿Como lo solucionarías tú? Con sobrecargas, tendría dos métodos Saludos
|
|
|
228
|
Programación / .NET (C#, VB.NET, ASP) / Re: Pequeña duda sobre argumentos
|
en: 13 Enero 2013, 18:15 pm
|
Todos los tipos de objetos deberían de implementar la misma interfaz o heredar de la misma base (nada de lo que pones como ejemplo), de lo contrario, para eso se utilizan las sobrecargas Podrías pasar un object, pero no es para nada recomendable, donde vea que comienzas a hacer eso te baneo , en un rato me paso por tu post de snippets para darte unas sugerencias en cuanto a estructura de código Saludos
|
|
|
230
|
Programación / .NET (C#, VB.NET, ASP) / Re: Es c# dejen lo pasar por ahora sobre metodos virtuales
|
en: 11 Enero 2013, 23:56 pm
|
no entiendo porque este post tiene chincheta Ups La herencia es una caracterísica de lenguaje POO que es capaz dereutilizar otra clase por ejemplo de una superclase y tener la misma signature creo que me expliqué bien,por cierto gracias por responder
Bien, sí tú en una clase tienes un método X con cierto comportamiento, y en una clase derivada quieres redefinir/reescribir este método, el mismo debe de estar declarado como virtual en la base (abstracto es otra opción, pero tiene otro comportamiento). Supongamos que tienes una clase Vehículo con un método mover que simula el movimiento en un casillero. Por otra parte tienes una clase derivada de nombre Ferrari, sí quieres que este último se mueva 5 casilleros, en la clase Vehículo el método mover debe de estar definido como virtual, para luego en Ferrari sobreescribirlo con override Espero se haya entendido. Saludos
|
|
|
|
|
|
|