When i execute a search in my application I want to have a timeout-function that gives the user a message and stops the search after 10 seconds.
How is this possible? Can you show me the code for that?
Let me know if you need to se my code and which part you need to see.
Thank you
Hello! Here is the Code. Forgot to tell you im using a backgroundworker do the suggestions you posted wont work.
I want to set a time limit for this piece
private void worker_DoWork(object sender, DoWorkEventArgs e) { progress = 0; Stopwatch sw = new Stopwatch(); sw.Start(); var donewithwork = false;
while (sw.ElapsedMilliseconds < 5000 && !donewithwork)
{
if (m_oWorker.CancellationPending == true)
{
e.Cancel = true;
}
else if (donewithwork != true)
{
{
try
{
progress = 10;
MongoServerSettings settings = new MongoServerSettings();
settings.Server = new MongoServerAddress("lysing.uia.no", 27017);
MongoServer server = new MongoServer(settings);
MongoDatabase database = server.GetDatabase("tweet_database");
var collection = database.GetCollection<Tweets>("docs");
var query = Query.And(Query.Matches("text", new BsonRegularExpression(new Regex(searchText, RegexOptions.IgnoreCase)))
/*, Query.Near("geo",58.1453, 7.9571, 1000, true)*//*, Query.Matches("created_at", "Jan")*/);
var cursor = collection.Find(query);
progress = 20;
// Sets the cursorLimit to the four same values as the radiobuttons indicates (50,100,500 and 1000)
if (cursorLimit != 0)
{
cursor.SetLimit(cursorLimit);
}
// If no value is picked (equals 0), this messagebox will appear
else
{
cursor.SetLimit(10);
MessageBox.Show("Du må velge en verdi på høyre side. Standard verdi er 10. ");
}
progress = 30;
Console.Write("2");
/* Thread t = new Thread(TimeTick);
t.Start();*/
Console.Write("Elapsed time1 is:" + sw.ElapsedMilliseconds );
if (cursor.Size() == 0)
{
Console.Write("3");
MessageBox.Show("Ditt søk returnerte ingen treff. Vennligst prøv et annet søkeord.");
Console.Write("Elapsed expired time is:" + sw.Elapsed);
// t.Join();
break;
}
progress = 40;
Console.Write("4");
Console.Write("Elapsed time2 is:" + sw.Elapsed);
if (m_oWorker.CancellationPending == true)
{
e.Cancel = true;
}
App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(() =>
MainViewModel.TweetOC.Clear()));
App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(() =>
MainViewModel.GeoOC.Clear()));
progress = 50;
foreach (var item in cursor)
if (m_oWorker.CancellationPending == true)
{
e.Cancel = true;
}
else if (item.geo != null && item.text != null)
{
App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(() =>
GeoOC.Add(item)));
TweetOC.Add(item);
}
else
{
App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(() =>
MainViewModel.TweetOC.Add(item)));
}
progress = 60;
var size = cursor.Size();
if (cursorLimit == 0)
{
cursorLimit = 10;
}
if (m_oWorker.CancellationPending == true)
{
e.Cancel = true;
}
if (
MessageBox.Show( "Du fikk" + " " + size + " " + "treff av" + " " + cursor.Count() + " " + "mulige. \r\n" + " " +
"Ønsker du å hente ut de neste" + " " + cursorLimit + " " + "Svarene også?", "Antall mulig treff", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
var query2 = Query.And(Query.Matches("text", new BsonRegularExpression(new Regex(searchText, RegexOptions.IgnoreCase))));
var cursor2 = collection.Find(query2);
cursor2.Skip = cursorLimit;
cursor2.Limit = cursorLimit;
foreach (var item in cursor2)
if (m_oWorker.CancellationPending == true)
{
e.Cancel = true;
}
else if (item.geo != null && item.text != null)
{
App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(() =>
GeoOC.Add(item)));
TweetOC.Add(item);
}
else
{
App.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ThreadStart(() =>
MainViewModel.TweetOC.Add(item)));
}
}
progress = 70;
System.Console.WriteLine("TweetViewCount:" + TweetOC.Count);
System.Console.WriteLine("GeoViewCount:" + GeoOC.Count);
Console.Write("Elapsed time3 is:" + sw.Elapsed);
// t.Join();
progress = 100;
//return database;
}
catch (Exception)
{
throw new Exception("Something went wrong");
}
}
donewithwork = true;
}
else MessageBox.Show("Your search did not return a match. Please search for something else.");
progress = 0;
}
}