0
해시를 해시하는 작은 C# 프로그램을 작성하고 있습니다. 내가 초당 통해 올 얼마나 많은 해시를 추적하는 OnTimedEvent와 타이머를 가지고 무한 동안 (사실) 루프 순간스레드를 동결하지 않고 (벤치 마크) 무한 루프
hash = md5.ComputeHash(hash);
tell me how many times per second it can do this.
: 나는 (다소 벤치 마크 등)이 일을하고 싶습니다 해싱을 계속하려면. Offcourse 내 프로그램과 타이머는 해시가 시작되는 즉시 멈 춥니 다.
이 작업을 수행하는 적절한 방법은 무엇입니까? 동결없이 어떻게 해싱을 유지할 수 있습니까?
미리 감사드립니다. 이 시점에 모든 것을 마틴
는 타이머를 제외하고 고 quiete 선형이다. BackgroundWorker 구성 옵션이 그렇게 나쁘지되지 않도록
public partial class Form1 : Form
{
private int count;
private MD5 md5;
private byte[] hash;
private bool Calculate = false;
private System.Timers.Timer timer;
public Form1()
{
InitializeComponent();
count = 0;
PrepareFirstHash();
timer = new System.Timers.Timer(1000);
timer.Elapsed += OnTimedEvent;
timer.Enabled = true;
}
private void PrepareFirstHash()
{
md5 = MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes("start");
hash = md5.ComputeHash(inputBytes);
}
private void DoCalc()
{
hash = md5.ComputeHash(hash);
count++;
}
private void OnTimedEvent(Object source, ElapsedEventArgs e)
{
SetText(count.ToString());
count = 0;
}
delegate void SetTextCallback(string text);
private void SetText(string text)
{
if (this.label1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.label1.Text = text;
}
}
private void btnStart_Click(object sender, EventArgs e)
{
Calculate = true;
while (Calculate){
DoCalc();
}
}
private void btnStop_Click(object sender, EventArgs e)
{
Calculate = false;
}
}
}
이 BackgroundWorker''에 대한 작업처럼 소리 :
당신은 정말 다음 것은 유리한 출발을 줄 수 있지만, 멀티 스레드 프로그램에서 다이빙을해야합니다. http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx – Vlad
을 참조하십시오. 한 가지 방법을 시도하는 중이라면, 콘솔 앱과'System.Diagnostics '를 사용하십시오. 스톱워치'? –