[ Foro de C# ]

Fallo al incluir libreria

09-Nov-2016 13:05
Invitado (omardavinci)
0 Respuestas

Estoy intentando incluir la librería y llamar a la función principal de mi librería, del siguiente siguiente modo:

   using myddl;
   namespace ConsoleApplication1
   {
       class Program
       {
           static void Main(string[] args)
           {
               Program.Main(args);
           }
       }
   }

La clase es la siguiente:

class Program
{
static Pool _pool = null;
static Work _work = null;
static uint _nonce = 0;
static long _maxAgeTicks = 20000 * TimeSpan.TicksPerMillisecond;
static uint _batchSize = 100000;

static void Main(string[] args)
{
   while (true)
   {
       try
       {
           _pool = SelectPool();
           _work = GetWork();
           while (true)
           {
               if (_work == null || _work.Age > _maxAgeTicks)
                   _work = GetWork();

               if (_work.FindShare(ref _nonce, _batchSize))
               {
                   SendShare(_work.Current);
                   _work = null;
               }
               else
                   PrintCurrentState();
           }
       }
       catch (Exception e)
       {
           Console.WriteLine();
           Console.Write("ERROR: ");
           Console.WriteLine(e.Message);
       }
       Console.WriteLine();
       Console.Write("Hit 'Enter' to try again...");
       Console.ReadLine();
   }
}


private static void ClearConsole()
{
   Console.Clear();
   Console.WriteLine("*****************************");
   Console.WriteLine("*** Minimal Bitcoin Miner ***");
   Console.WriteLine("*****************************");
   Console.WriteLine();
}

private static Pool SelectPool()
{
   ClearConsole();
   Print("Chose a Mining Pool 'user:password@url:port' or leave empty to skip.");
   Console.Write("Select Pool: ");
   string login = ReadLineDefault("lithander_2:foo@btcguild.com:8332");
   return new Pool(login);
}

private static Work GetWork()
{
   ClearConsole();
   Print("Requesting Work from Pool...");
   Print("Server URL: " + _pool.Url.ToString());
   Print("User: " + _pool.User);
   Print("Password: " + _pool.Password);
   return _pool.GetWork();
}

private static void SendShare(byte[] share)
{
   ClearConsole();
   Print("*** Found Valid Share ***");
   Print("Share: " + Utils.ToString(_work.Current));
   Print("Nonce: " + Utils.ToString(_nonce));
   Print("Hash: " + Utils.ToString(_work.Hash));
   Print("Sending Share to Pool...");
   if (_pool.SendShare(share))
       Print("Server accepted the Share!");
   else
       Print("Server declined the Share!");

   Console.Write("Hit 'Enter' to continue...");
   Console.ReadLine();
}

private static DateTime _lastPrint = DateTime.Now;
private static void PrintCurrentState()
{
   ClearConsole();
   Print("Data: " + Utils.ToString(_work.Data));
   string current = Utils.ToString(_nonce);
   string max = Utils.ToString(uint.MaxValue);
   double progress = ((double)_nonce / uint.MaxValue) * 100;
   Print("Nonce: " + current + "/" + max + " " + progress.ToString("F2") + "%");
   Print("Hash: " + Utils.ToString(_work.Hash));
   TimeSpan span = DateTime.Now - _lastPrint;
   Print("Speed: " + (int)(((_batchSize) / 1000) / span.TotalSeconds) + "Kh/s");
   _lastPrint = DateTime.Now;
}

private static void Print(string msg)
{
   Console.WriteLine(msg);
   Console.WriteLine();
}

private static string ReadLineDefault(string defaultValue)
{
   //Allow Console.ReadLine with a default value
   string userInput = Console.ReadLine();
   Console.WriteLine();
   if (userInput == "")
       return defaultValue;
   else
       return userInput;
}
}

Incluí la referencia del _DLL_ y todo aún así, me muestra este error:

>Error: Process is terminated due to StackOverFlowException




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)