1
如何在同一頁中停止執行後如何獲取計數?例如,現在這條線不斷重複,直到我停下來。它顯示我開始處理時剩餘的計數。但是我需要在停止repeatin行後留下剩下的數字。如何停止執行並在同一個輸出屏幕中得到結果?
有人請幫助我。
的計劃是 -
namespace Time_Writer
{
class Program
{
static int count = 1;
static double seconds;
static int total = 10000;
private static System.Timers.Timer aTimer;
static void Main(string[] args)
{
ReadCountFromFile();
aTimer = new System.Timers.Timer();
aTimer.Elapsed +=new System.Timers.ElapsedEventHandler(aTimer_Elapsed);
aTimer.Interval = 5000;
aTimer.Enabled = true;
Console.WriteLine("Press Enter To Exit The Program\n");
Console.ReadLine();
AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
}
private static void ReadCountFromFile()
{
try
{
if (File.Exists(".\\mynumber.dat"))
{
using (var file = File.Open(".\\mynumber.dat", FileMode.Open))
{
byte[] bytes = new byte[4];
file.Read(bytes, 0, 4);
count = BitConverter.ToInt32(bytes, 0);
total = total - count;
Console.WriteLine("Total count left is = {0}", total);
Console.WriteLine("Limit = 10000");
Console.WriteLine("Count = {0}", count);
Console.WriteLine("Count: {0} of 10000. {1} remaining", count, 10000 - count);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Problem reading file.");
}
}
static void CurrentDomain_ProcessExit(Object sender, EventArgs e)
{
using (var file = File.Open(".\\mynumber.dat", FileMode.OpenOrCreate))
{
var buffer = BitConverter.GetBytes(count);
file.Write(buffer, 0, buffer.Length);
}
}
private static void aTimer_Elapsed(object source, ElapsedEventArgs e)
{
Console.WriteLine("Name is Yap {0}", e.SignalTime);
seconds += 5;
count += 1;
if (count>10000 || seconds == 86400)
{
aTimer.Enabled = false;
Console.WriteLine("\n\nTimer is off at {0}\n\n", e.SignalTime.TimeOfDay.ToString());
}
}
}
}
見弗雷德裏克的答案在這裏:http://stackoverflow.com/questions/1119841/net-console-application-exit-event - 與空「消息泵」在一個單獨的線程上運行一個完整的示例程序,基本上他使用消息泵在控制檯應用程序ProcesssExits之前捕獲事件。有些註釋表明您需要「一種正常退出應用程序」,因此您可以使用另一個函數替換CurrentDomain_ProcessExit,該函數在打印結果後調用CurrentDomain_ProcessExit。另請參閱EricLaw -MSFT-答案。 HTH – 2012-03-06 05:40:54
有完整源代碼的最終解決方案? – Kiquenet 2012-08-30 10:23:17