Telerik Progress Bar Component
@code {
private const int TimerInterval = 1000;
private const int TotalTime = 10 * TimerInterval;
private double ProgressValue = 0;
private int ProgressStep = 100 / (TotalTime / TimerInterval);
private Timer Timer { get; set; } = new Timer();
private void Dispose()
{
StopProgress();
Timer?.Close();
}
protected override void OnAfterRender(bool firstRender)
{
if (Timer.Enabled == false)
{
Timer.Interval = TimerInterval;
Timer.Elapsed -= OnTimerElapsed;
Timer.Elapsed += OnTimerElapsed;
Timer.AutoReset = true;
Timer.Start();
}
}
private void OnTimerElapsed(Object source, ElapsedEventArgs e)
{
if (ProgressValue < 100)
{
UpdateProgress();
}
else
{
StopProgress();
}
}
private void UpdateProgress()
{
ProgressValue += ProgressStep;
InvokeAsync(StateHasChanged);
}
private void StopProgress()
{
Timer?.Stop();
}
}
```
* In here, we've just added the `TelerikProgressBar` component to check the integration configured properly.
* When we run `*.HttpApi.Host` and `*.Blazor` projects, we should see that the `TelerikProgressBar` component works and has similar view as the below gif.

* If you haven't seen this component like above, you should check the above configurations and be assure every step done as stated.
### Step 3 - Using The Telerik Blazor Components (Sample Application)
* Let's create a sample application for use other Telerik Blazor Components (like DataGrid).
* We will use [jsonplaceholder](https://jsonplaceholder.typicode.com/) as **mock data** to the listing, adding, updating and deleting posts.
* Firstly, we can create a folder named `Posts` and inside this folder, we can create the classes which are highlighted in the following screenshot.

* After classes created we can fill the classes with the following contents.
**Post.cs**
```csharp
using System;
namespace TelerikComponents.Posts
{
[Serializable]
public class Post
{
public int Id { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public int UserId { get; set; }
}
}
```
**Comment.cs**
```csharp
using System;
namespace TelerikComponents.Posts
{
[Serializable]
public class Comment
{
public int PostId { get; set; }
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Body { get; set; }
}
}
```
**IPostAppService.cs**
```csharp
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace TelerikComponents.Posts
{
public interface IPostAppService : IApplicationService
{
Task