• Awards Season
  • Big Stories
  • Pop Culture
  • Video Games
  • Celebrities

Stuck At The Airport? Tips For Flight Cancellations or Delays

net task delay cancel

Getting to the airport and finding out your flight is delayed or canceled can be a frustrating experience. You may be excited to get on your trip or to return home. Or maybe you have an important event or meeting on the other side of your flight. This need to travel and get there at expected times, combined with staffing shortages among almost every airline, has led to severe delays, interruptions, and lost baggage. In light of the new rules that protect refunds to travelers if an airline cancels or delays flights, what else can you do when stuck at the airport? Check out our tips on what to do if you are stuck at the airport.

1. Rebook/Change Flights

The Department of Transportation has made it clear that travelers’ current difficulties with canceled or delayed flights are unacceptable. They have outlined how airlines must support travelers when faced with interruptions. The newly released airline customer service dashboard shows which airlines will rebook passengers on another flight at no additional cost. Some airlines even offer to rebook on an entirely different airline for free. 

If you get stuck at the airport, look at this dashboard before speaking with airport agents to know your rights. When you talk with an agent, explain your situation, and see what options you have to reach your final destination. If you have a significant amount of time before your new flight, you can ask to be put up in a hotel.

2. Get a Refund If You Are Stuck At the Airport

If rebooking or changing flights will not work with your schedule, you can get a refund . Under new guidance from the Department of Transportation, airlines would have to provide refunds to the original form of payment for significant delays or cancellations when passengers elect not to rebook. 

The DoT has defined a significant change as the following, changes: 

  • That affect the departure and/or arrival times by three hours or more for a domestic flight or six hours or more for an international flight
  • To the departure or arrival airport
  • That increase the number of connections in the itinerary
  • To the type of aircraft flown if it causes a significant downgrade in the air travel experience or amenities available onboard the flight

Your best bet to receive a refund would be to call the customer service line for your airline. Agents at the airport do not have much power to issue refunds. So call the help desk to get an idea of your options. 

You can also go to the customer service counter at the airport if you prefer to talk to someone face-to-face. As seen in the airline customer service dashboard , each of the major airlines has its own procedures to respond to delays and cancellations. Check the dashboard to see what your airline can do for you.

Note that you will not receive this refund if you accept alternate transportation. And these rules only apply to US domestic flights, so know that your rights differ for international flights. For example, when traveling to Europe, EU Flight Compensation Regulation 261/2004 protects you. It provides an even more comprehensive coverage. 

3. Go To the Lounge

One of the best things to do at the airport is hanging out at an airport lounge. Lounges offer complimentary food and drinks, have plenty of seating and fast wifi, and some even have showers or massages. Going to a lounge can keep you calm and decrease stress levels when dealing with changed flights. 

The easiest way to access a lounge has a credit card that grants you lounge access. Some cards give you a priority pass membership, providing you access to more than 1300 lounges worldwide. Here is a list of all the cards that offer you Priority Pass:

  • Capital One Venture X Rewards Credit Card
  • Chase Sapphire Reserve
  • The Platinum Card from American Express
  • Hilton Honors American Express Aspire Card
  • Marriott Bonvoy Brilliant American Express Card
  • U.S. Bank Altitude Reserve Visa Infinite Card
  • Hilton Honors American Express Surpass Card

You can also get co-branded airline cards that will give you access to their lounge when flying with that airline. These include:

  • Delta Skymiles Reserve American Express Card
  • United Club Infinite Card
  • Citi / AAdvantage Executive World Elite Mastercard

If you do not have a credit card that gives you lounge access, you can pay for a day pass to your chosen lounge. Day passes typically range from $40 to $70, which might sound expensive, but can save you money if you have a significant delay. It is worth every penny when you add all the food, drinks, and comfort you receive. 

4. Pass the Time If You Are Stuck At the Airport

Airports are like miniature cities, with bars, restaurants, shopping, chapels, and hundreds of people you can meet. Wander through the airport and find different things to do. 

  • Shopping : Go through the duty-free shops to see if you can get any deals on goods. Some international airports have designer stores you can wander through, which is always entertaining. Some of the most incredible airports in the world have movie theaters, butterfly gardens, yoga rooms, and napping pods. While going for a walk to see what amenities are on offer, stop by a customer service desk and ask about some ways to kill time.
  • Get Work Done or Watch Shows: If you have your laptop, passing the time is even easier. You can do work, plan a vacation, or watch Netflix. Airports typically offer free wifi, so you can get ahead on your to-do list while waiting for your next flight. 
  • Be Social : If you are feeling social, offer to buy someone a drink while sitting at the airport bar or loan someone a phone charger that looks like they need one. Performing small acts of kindness can be a great way to get conversations flowing, and you might meet a lifelong friend or partner this way. You just have to be open to the possibilities.
  • Leave the Airport : If you have enough time, you can leave the airport. You can head home or explore a new city. Keep in mind visa regulations when traveling internationally. Always ensure you have plenty of time to get back to the airport. Many airports offer lockers or baggage storage for a fee, so you can go for a few hours without worrying about your luggage. You can take a taxi or public transport into the city and go sightseeing for the day before returning to the airport. If you elect this option, do note that you will have to go back through security when you return to the airport, so you will want to budget enough time. Even if your layover is in a city you would never plan to explore; there are fun things to do just about anywhere. A long layover can give you a unique opportunity to see something you would not usually see. 

Always Be Ready

You never know when you will experience flight cancellations or delays, but it doesn’t hurt to be ready. This way, if you do get trapped in a long delay, it is not entirely unexpected and frustrating. 

As part of your planning, pack all essential medications in your carry-on, as well as a change of clothes, some snacks, headphones, a book, or anything else that will make you more comfortable. 

Knowing your options, rights, and possibilities will make long layovers feel short. If you are lucky enough not to experience a delay, you are prepared just in case. 


net task delay cancel

This browser is no longer supported.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

Cancel current Task.Delay

I'm performing swipe to delete items from a list named mylist . After an item is deleted I want to show an "UNDO" button for 10 seconds.

Here are my codes.

If i delete an item from list and after 5 sec if I deletes another item, i want the current Task.Delay to be cancelled and start a new one. I heard this can done using cancellation token. But i don't know!

Help would be appreciated.

Xamarin A Microsoft open-source app platform for building Android and iOS apps with .NET and C#. 5,206 questions Sign in to follow

Welcome to our Microsoft Q&A platform!

You can use CancellationTokenSource.Cancel Method to cancel Task and use CancellationToken.ThrowIfCancellationRequested Method to check this token has had cancellation requested.

Please see my following code, I use Stopwatch to count time.

Best Regards,

--- If the response is helpful, please click " Accept Answer " and upvote it.

Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

I got Java.Lang.RuntimeException .


Hi @Abraham John According to your error message, I guess that you want to call Toast, you can not show a Toast on non-UI thread, try this code Device.BeginInvokeOnMainThread(() => { undo_msg.IsVisible = false; });


I've done that.

But timing problem still exists that if we delete second item after 5s of first item been deleted, Undo is showing only for 5s not cancelling previous delay.

Hi @Abraham John I can not find problem for my code, maybe you can try to use Toast to display message, you can Google: Xamarin.Forms - How To Make Toast Message Using Dependency Service

I'm already toasting using Dependency Service.

Hi @Abraham John May I know whether your issue has been solved or not when you add Toast with Dependency Service? If not, please share it in here. We can work together to figure it out.

blog post image

Andrew Lock | .NET Escapades Andrew Lock

  • .NET Core 6

Just because you stopped waiting for it, doesn't mean the Task stopped running

At the end of my previous post, in which I took a deep-dive into the new .NET 6 API Task.WaitAsync() , I included a brief side-note about what happens to your Task when you use Task.WaitAsync() . Namely, that even if the WaitAsync() call is cancelled or times-out, the original Task continues running in the background.

Depending on your familiarity with the Task Parallel Library (TPL) or .NET in general, this may or may not be news to you, so I thought I would take some time to describe some of the potential gotchas at play when you cancel Task s generally (or they "timeout").

Without special handling, a Task always run to completion

Let's start by looking at what happens to the "source" Task when you use the new WaitAsync() API in .NET 6.

One point you might not consider when calling WaitAsync() is that even if a timeout occurs, or the cancellation token fires, the source Task will continue to execute in the background. The caller who executed source.WaitAsync() won't ever see the output of result of the Task , but if that Task has side effects, they will still occur.

For example, in this trivial example, we have a function that loops 10 times, printing to the console every second. We invoke this method and call WaitAsync() :

The output shows that the Task we awaited was cancelled after 3s, but the PrintHello() task continued to execute:

WaitAsync() allows you to control when you stop waiting for a Task to complete. It does not allow you to arbitrarily stop a Task from running. The same is true if you use a CancellationToken with WaitAsync() , the source Task will run to completion, but the result won't be observed.

You'll also get a similar behaviour if you use a "poor man's" WaitAsync() (which is one of the approaches you could use pre-.NET 6):

As before, the output shows that the printHello task continues to execute, even after we've stopped waiting for it:

So what if you want to stop a Task in its tracks, and stop it using resources?

Actually cancelling a task

The only way to get true cancellation of a background Task , is for the Task itself to support it. That's why async APIs should almost always take a CancellationToken , to provide the caller a mechanism to ask the Task to stop processing!

For example, we could rewrite the previous program using a CancellationToken instead:

Running this program shows the following output:

We could alternatively re-write the PrintHello method so that it doesn't throw when cancellation is requested:

Note, however, that in a recent blog post, Stephen Cleary points out that generally shouldn't silently exit when cancellation is requested. Instead, you should throw.

Handling cancellation cooperatively with a CancellationToken is generally a best practice, as consumers will typically want to stop a Task from processing immediately when they stop waiting for it. But what if you want to do something a bit different…

If the Task keeps running, can I get its result?

While writing this post I realised there was an interesting scenario you could support with the help of the new WaitAsync() API in .NET 6. Namely, you can await the source Task after WaitAsync() has completed. For example, you could wait a small time for a Task to complete, and if it doesn't, do something else in the mean time, before coming back to it later:

This is similar to the first example in this post, where the task continues to run after we time out. But in this case we subsequently retrieve the result of the completed task, even though the WaitAsync() task was cancelled:

Building support for cancellation into your async methods gives the most flexibility for callers, as it allows them to cancel it. And you probably should cancel tasks if you're not waiting for them any more, even if they don't have side effects.

Cancelling calls to Task.Delay()

One example of a Task without side effects is Task.Delay() . You've likely used this API before; it waits asynchronously (without blocking a Thread ) for a time period to expire before continuing.

It's possible to use Task.Delay() as a "timeout", similar to the way I showed previously as a "poor man's WaitAsync ", something like the following:

I'm not saying this is the "best" way to create a timeout, you could also use CancellationTokenSource.CancelAfter() .

In the previous example we start both the "main" async task and also call Task.Delay(timeout) , without await ing either of them. We then use Task.WhenAny() to wait for either the task to complete, or the timeout Task to complete, and handle the result as appropriate.

The "nice" thing about this approach is that you don't necessarily have to have any exception handling. You can throw if you want (as I have in the case of a Timeout in the previous example), but you could easily use a non-exception approach.

The thing to remember here is that whichever Task finishes first the other one keeps running .

So why does it matter if a Task.Delay() keeps running in the background? Well, Task.Delay() uses a timer under-the-hood (specifically, a TimerQueueTimer ). This is mostly an implementation detail. But if you are creating a lot of calls to Task.Delay() for some reason, you may be leaking these references. The TimerQueueTimer instances will be cleaned up when the Task.Delay() call expires, but if you're creating Task.Delay() calls faster than they're ending, then you will have a memory leak.

So how can you avoid this leak? The "simple" answer, much as it was before, is to cancel the Task when you're done with it. For example:

This approach will prevent the Task.Delay() from leaking, though be aware, the CancellationTokenSource is also quite heavyweight , so you should take that into account too if you're creating a lot of them!

This post showed a number of different scenarios around Task cancellation, and what happens to Task s that don't support cooperative cancellation with a CancellationToken . In all cases, the Task keeps running in the background. If the Task causes side effects, then you need to be aware these may continue happening. Similarly, even if the Task doesn't have additional side effects, it may be leaking resources by continuing to run.

Popular Tags

net task delay cancel

Stay up to the date with the latest posts!

Dot Net Tutorials

How to Cancel a Task in C# using Cancellation Token

Back to: C#.NET Tutorials For Beginners and Professionals

How to Cancel a Long-Running Task Using Cancellation Token in C#?

In this article, I will discuss How to Cancel a Long-Running Task in C# using Cancellation Token in C# with Examples. Please read our previous article discussing How to Limit the Number of Concurrent Tasks in C# using SemaphoreSlim with Examples. At the end of this article, you will understand the following pointers in detail:

How to Cancel a Long-Running Task in C#?

How to use a cancellation token to cancel a task in c#.

  • Constructors, Properties, and Methods of CancellationTokenSource Class in C#

How to Create and Use a Cancellation Token in C#?

  • Example to Understand Cancellation Token in C#

When to Use Cancellation Token to Cancel a Task in C#?

  • Realtime Example to Understand Cancellation Token in C#

When we run a long task, providing users with some mechanism to cancel the task is a good practice. The .NET Framework provides the Cancellation Token, using which we can cancel a task. Cancelling a Task in C# using a CancellationToken is a powerful way to terminate asynchronous operations.

You can use a CancellationToken to signal to a running task that it should stop executing. You can cancel a long-running Task in C# by using a CancellationToken and periodically checking whether cancellation has been requested within the Task’s logic. 

Let us see the steps or procedure to cancel a long-running task using Cancellation Token. So, what we will do here is, we are going to generate a cancellation token, and we will pass that token to the task that we want to cancel. Before doing the practical implementation, let us first understand the CancellationTokenSource class.

If you go to the definition of CancellationTokenSource class, you will find the following. It is a class implementing the IDisposable interface. This CancellationTokenSource Signals to a CancellationToken that it should be canceled.

How to use Cancellation Token to Cancel a Task in C#?

Constructors of CancellationTokenSource Class in C#:

The CancellationTokenSource class provides the following three constructors to create an instance of the CancellationTokenSource class.

  • CancellationTokenSource() : It Initializes a new instance of the CancellationTokenSource class.
  • CancellationTokenSource(TimeSpan delay) : It initializes a new instance of the CancellationTokenSource class that will be canceled after the specified time span. Here, the parameter delay specifies the time interval to wait before canceling this CancellationTokenSource. It will throw ArgumentOutOfRangeException if delay.System.TimeSpan.TotalMilliseconds is less than -1 or greater than System.Int32.MaxValue.
  • CancellationTokenSource(int millisecondsDelay) : It initializes a new instance of the CancellationTokenSource class that will be canceled after the specified delay in milliseconds. Here, the parameter millisecondsDelay specifies the time interval in milliseconds to wait before canceling this System.Threading.CancellationTokenSource. It will throw ArgumentOutOfRangeException if millisecondsDelay is less than -1.

Properties of CancellationTokenSource class in C#:

The CancellationTokenSource class in C# provides the following two properties:

  • public bool IsCancellationRequested { get; }: It gets whether cancellation has been requested for this CancellationTokenSource. It returns true if the cancellation has been requested for this CancellationTokenSource; otherwise, false.
  • public CancellationToken Token { get; }: It gets the CancellationToken associated with the CancellationTokenSource. It returns the CancellationToken associated with this CancellationTokenSource. It will throw ObjectDisposedException if the token source has been disposed.

Methods of CancellationTokenSource class in C#:

The CancellationTokenSource class provides the following methods:

  • Cancel(): It communicates a request for cancellation.
  • Cancel(bool throwOnFirstException): It communicates a request for cancellation and specifies whether remaining callbacks and cancellable operations should be processed if an exception occurs. Here, the parameter throwOnFirstException specifies true if exceptions should immediately propagate; otherwise, false.
  • CancelAfter(TimeSpan delay): It schedules a cancel operation on the CancellationTokenSource after the specified time span. Here, the parameter delay specifies the time span to wait before canceling this CancellationTokenSource.
  • CancelAfter(int millisecondsDelay): It schedules a cancel operation on this CancellationTokenSource after the specified number of milliseconds. Here, the parameter millisecondsDelay specifies the time span to wait before canceling this System.Threading.CancellationTokenSource.
  • Dispose(): It releases all resources used by the current instance of the CancellationTokenSource class.

First, we need to create an instance of the CancellationTokenSource class as follows. This CancellationTokenSource will create a CancellationToken that can be passed to the task.

CancellationTokenSource cancellationTokenSource = new CancellationTokenSource() ;

Then, we need to set the time interval, i.e., when this token will cancel the task execution. Here, we need to call the CancelAfter method if the CancellationTokenSource instance, and we need to specify the time in milliseconds as follows. It will cancel the task after 5 seconds as we specify 5000 milliseconds.


Next, our async method should accept the CancellationToken as a parameter. If you go to the definition of the CancellationToken class, you will see that this class has one property called IsCancellationRequested, which returns true if the cancellation has been requested for this token; otherwise, it is false. If it returns true, we must stop the execution and return. But as a standard, we need to throw TaskCanceledException. For a better understanding, please have a look at the below image.

How to Create and use Cancellation Token in C#?

Next, while calling the LongRunningTask method, we must pass the Cancellation Token. If you remember, the CancellationTokenSource class has one property called Token, and that property return type is CancellationToken, i.e., if we call the Token property on the CancellationTokenSource instance, then we will get the CancellationToken and that cancellation token, we need to pass to the LongRunningTask method as shown in the below image. Further, if you remember, the LongRunningTask method throws TaskCanceledException when the task is canceled, and hence, we need to use the try-catch block to handle the exception, as shown in the image below.

How to Cancel a Long-Running Task in C# using Cancellation Token in C# with Examples

I hope you understand how to create and use Cancellation Token. Let us see an example for a better understanding.

Example to Understand Cancellation Token in C#:

In the above example, we set the count variable value to 10. That means the loop inside the LongRunningTask method will execute 10 times. And inside the loop, we have delayed the execution for 1 second. That means the loop will take at least 10 seconds to execute. And we have set the cancellation token time to 5 seconds. Inside this method, we are checking whether we get the token cancellation request. If the IsCancellationRequested property returns true, 5 seconds is over, and then we throw TaskCanceledException. So, when you run the above code, you will get the following output.

Example to Understand Cancellation Token in C#

Now, if you set the count variable value to less than 5 and execute the code, you will see that the task is completed without throwing the TaskCanceledException.

Note: Instead of using the CancelAfter() method to set the time, you can also use the constructor, which takes time in milliseconds, or TimeSpan as an input parameter. For a better understanding, please have a look at the below image.

How to Cancel a Long-Running Task in C# using Cancellation Token in C# with Examples

In C#, you can use a CancellationToken to cancel a Task under certain conditions. CancellationToken is a mechanism the Task Parallel Library (TPL) provides to signal cancellation to a running Task. You need to use it when you want to cancel the execution of a Task based on some external conditions or user requests. Here are some common scenarios and approaches for using CancellationToken to cancel a Task:

User-Initiated Cancellation:

You can use CancellationToken to allow users to cancel long-running operations. For example, suppose you have a Task that performs a time-consuming computation or downloads a large file. In that case, you can periodically check a CancellationToken and gracefully exit the Task if cancellation is requested. Here’s an example:

Time-Based Cancellation:

You can also use CancellationToken with a CancellationTokenSource and a Timer to cancel a Task after a specified timeout. Here’s an example:

Cooperative Cancellation:

If you have multiple Tasks that need to cooperate for cancellation, you can use the same CancellationTokenSource for all of them. When you cancel the CancellationTokenSource, all associated Tasks will be canceled. This can be useful for managing a group of related Tasks.

Cancellation in Async Methods:

If you are working with asynchronous methods, you can also pass a CancellationToken to the async method and use it to check for cancellation during its execution. This allows you to cancel async operations when needed.

In all these scenarios, it’s essential to regularly check the CancellationToken’s IsCancellationRequested property within the Task’s logic to detect the cancellation request and respond appropriately, whether cleaning up resources, returning early, or completing the Task gracefully.

Realtime Example to Understand Cancellation Token in C#:

Creating asp.net web api project.

Open Visual Studio and create a new ASP.NET Web API Project. If you are new to ASP.NET Web API, please look at our ASP.NET Web API Tutorials . Here, we are creating an Empty Web API Project named WebAPIDemo. Once we have created the Web API Project, add a Web API Controller named HomeController inside the Controllers folder. Once you add the HomeController, please copy and paste the following code inside it. Here, we are creating an async method that returns a string, and intentionally, we delayed the execution for 5 seconds.

Now, run the Web API application, and you can access the GetGreetings resource using the URL  api/greetings/name as shown in the image below. In place of a name, you can pass any values. Please note the port number; it might be different in your case.

Realtime Example to understand Cancellation Token in C#

Calling Web API from Console Application using Cancellation Token:

Now, we will make an HTTP Request to the Web API from our Console Application. Please copy the endpoint address of the Web API. And then modify the code as follows. You need to replace the port number on which your Web API application is running. In the below example, we are making an asynchronous call to the Web API. Here, please observe the GetAsync method, the second parameter of this overloaded version taking the Cancellation Token, and internally, it cancels the execution of the task after 4 seconds.

Cancellation Token in C# with Examples

Note: Before running the Console Application, run the Web API application first.

Now, change the task cancellation time interval to 10 seconds and execute the following program.

Cancellation Token Examples in C#

This time, as you can see, the task is not canceled. This is because the task was completed before 10 seconds, i.e., we got the API response before 10 seconds.

In the next article, I will discuss Creating a Synchronous Method in C# using Tasks with Examples. In this article, I explain How to Cancel a Long-Running Task using Cancellation Token in C# with Examples. I hope you enjoy this How to Cancel a Task in C# using Cancellation Token with Examples article.

dotnettutorials 1280x720

About the Author: Pranaya Rout

Pranaya Rout has published more than 3,000 articles in his 11-year career. Pranaya Rout has very good experience with Microsoft Technologies, Including C#, VB, ASP.NET MVC, ASP.NET Web API, EF, EF Core, ADO.NET, LINQ, SQL Server, MYSQL, Oracle, ASP.NET Core, Cloud Computing, Microservices, Design Patterns and still learning new technologies.

2 thoughts on “How to Cancel a Task in C# using Cancellation Token”

net task delay cancel

Guys, Please give your valuable feedback. And also, give your suggestions about this How to Cancel a Task in C# concept. If you have any better examples, you can also put them in the comment section. If you have any key points related to How to Cancel a Task in C#, you can also share the same.

net task delay cancel

Hello, where to start learning ASP.NET Web API first? 1) https://dotnettutorials.net/course/asp-net-web-api/ or 2) https://dotnettutorials.net/course/asp-net-core-tutorials/

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

C# – Cancel task.delay without exception or use exception to control flow

async-await asynchronous c++ exception-handling task-parallel-library

I'm unsure about two possibilities to react to an event in my code. Mostly I'm concerned about which one needs less resources. I have a method with an observer registered to an eventproducer . If the eventproducer returns something, the method exits and the caller of the method starts the method again (you can think of it as a kind of a long polling).

The eventproducer sometimes fires lots of events per seconds and sometimes rests for minutes.

The first approach was to await a delay of 500ms and then check if there is something to return or otherwise (until a timeout of 5 minutes) again delay for 500ms.

The second approach was to use a CancellationToken . If the eventproducer produces something, the CancellationTokenSource cancels the source. And in the method I wait for Task.Delay(5min, cancellationToken) .

The advantages of the second approach are that the method immediately returns if the producer produces something and that we don't have to await and awake in a loop.

But with the second approach every time the producer produces something, a TaskCanceledException is thrown. I'm concerned that this could affect system load more than the awake and await every 500ms especially i times when the eventproducer produces lots of events.

Am I overestimating the cost of throwing and catching an exception? And is there a way to cancel Task.Delay with a CancellationToken but without throwing a TaskCanceledException ? I.E. something like task.setComplete ?

Best Solution

If you want an immediate notification similar to what a cancellation gives you but without an exception you can simply use TaskCompletionSource .

TaskCompletionSource is how you create a promise task. You get an uncompleted task from the Task property and you complete it (or cancel) with SetResult . You can use it to actually pass on the result itself:

This solution doesn't have any exceptions and doesn't use unnecessary polling

To answer your specific questions:

Am I overestimating the cost of throwing and catching an exception?

Probably. You need to test and prove it's really an issue.

And is there a way to cancel Task.Delay with a CancellationToken but without throwing a TaskCanceledException ?

Yes. Add an empty continuation:

Related Solutions

C# – how to use assert to verify that an exception has been thrown.

For "Visual Studio Team Test" it appears you apply the ExpectedException attribute to the test's method.

Sample from the documentation here: A Unit Testing Walkthrough with Visual Studio Team Test

C# – Rx: How to respond immediately, and throttle subsequent requests

Here's my approach. It's similar to others that have gone before, but it doesn't suffer the over-zealous window production problem.

The desired function works a lot like Observable.Throttle but emits qualifying events as soon as they arrive rather than delaying for the duration of the throttle or sample period. For a given duration after a qualifying event, subsequent events are suppressed.

Given as a testable extension method:

The idea is to use the overload of Window that creates non-overlapping windows using a windowClosingSelector that uses the source time-shifted back by the sampleDuration . Each window will therefore: (a) be closed by the first element in it and (b) remain open until a new element is permitted. We then simply select the first element from each window.

Rx 1.x Version

The Publish extension method used above is not available in Rx 1.x. Here is an alternative:

Search code, repositories, users, issues, pull requests...

Provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

  • Notifications

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task Delay(int millisecondsDelay, CancellationToken cancellationToken, bool throwException) #45650


TonyValenti commented Dec 6, 2020

  • 👍 1 reaction


msftbot bot commented Dec 6, 2020

Sorry, something went wrong.


stephentoub commented Dec 6, 2020

  • 👍 2 reactions


carlossanlop commented Jan 21, 2021 • edited


No branches or pull requests



  1. Cancel / block a task triggered with delay by windows "task scheduler" (2 Solutions!!)

    net task delay cancel

  2. C# : Cancel task.delay without exception or use exception to control flow?

    net task delay cancel

  3. How to set Task Delay Notification?

    net task delay cancel

  4. C#中的Task.Delay()和Thread.Sleep()區別-有解無憂

    net task delay cancel

  5. ASIC-System on Chip-VLSI Design: Net Delay or Interconnect Delay or Wire Delay or Extrinsic

    net task delay cancel

  6. Net Delay

    net task delay cancel


  1. Stuck At The Airport? Tips For Flight Cancellations or Delays

    Getting to the airport and finding out your flight is delayed or canceled can be a frustrating experience. You may be excited to get on your trip or to return home. Or maybe you have an important event or meeting on the other side of your f...

  2. What Is Net Force?

    A net force is the remaining force that produces any acceleration of an object when all opposing forces have been canceled out. Opposing forces decrease the effect of acceleration, lowering the net force of acceleration acting on an object.

  3. How Long Does a Baseball Rain Delay Last, Before the Game Must Be Called Off?

    A rain delay must last at least 30 minutes, before the umpire cancels the game. According to Major League Baseball, until the beginning of a game, the home manager reserves the right to delay or cancel the game. After the beginning of the g...

  4. How to cancel await Task.Delay()?

    You need to decide what happens when a task is cancelled, for example Try/Catch goes around the delay, in the Catch you could put 'break' to

  5. Task.Delay Method (System.Threading.Tasks)

    If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the Canceled

  6. Cancel current Task.Delay

    You can use CancellationTokenSource.Cancel Method to cancel Task and use CancellationToken.ThrowIfCancellationRequested Method to check this

  7. Just because you stopped waiting for it, doesn't mean the Task

    ... NET 6 WaitAsync() API, and in other Task cancellation scenarios. ... Cancel(); // Cancel the delay return await task.ConfigureAwait

  8. Task.Delay(Timeout.Infinite, cancellationToken) does not return

    // >> wait for cancellation await Task.Delay(Timeout.Infinite ... KalleOlaviNiemitalo commented on Jun 25. In .NET 8, ConfigureAwait(

  9. How to Cancel a Task in C# using Cancellation Token

    CancellationTokenSource(TimeSpan delay): It initializes a new instance of the CancellationTokenSource class that will be canceled after the

  10. Cancel task.delay without exception or use exception to control flow

    And in the method I wait for Task.Delay(5min, cancellationToken) . eventProducer.RegisterListener((events)=>{evList.Add(events); cancelSource.Cancel();}

  11. Example Code for Cancellation of Delayed Tasks in C#

    Quartz.net CancellationToken, C# tasks are not cancelled, Repeated Tasks using Timer Interval vs Task Delay.

  12. Отмена задач и параллельных операций. CancellationToken

    cancelTokenSource.Cancel();. task.Wait(); // ожидаем завершения задачи. } catch (AggregateException ae). {. foreach (Exception e in ae

  13. How to use cancellation tokens?

    public async Task<Unit> Handle(LongTaskRequest request, CancellationToken cancellationToken) { await Task.Delay(80000, cancellationToken);

  14. Task Delay(int millisecondsDelay, CancellationToken ...

    When doing a Task.Delay I often want to cancel the delay due to another operation completing successfully. When canceling the timeout, it causes