Develop a C# program that performs a frequency analysis on a given text document. Use a hash table to store each word in the document as a key and the frequency of each word as its value. The program should read a text file, tokenize it into words, and then count the frequency of each word. Finally, it should output the top 5 most frequent words along with their frequencies.

Here is a sample C# program that performs frequency analysis on a given text document:

```c#
using System;
using System.IO;
using System.Collections.Generic;

class FrequencyAnalyzer
{
static void Main()
{
string text = File.ReadAllText("sample.txt");
string[] words = text.Split(new char[] { ' ', '.', ',', '?', '!', '\n', '\r', '\t' });

Dictionary<string, int> wordFrequency = new Dictionary<string, int>();

foreach (string word in words)
{
if (!string.IsNullOrEmpty(word))
{
string cleanedWord = word.ToLower();
if (wordFrequency.ContainsKey(cleanedWord))
{
wordFrequency[cleanedWord]++;
}
else
{
wordFrequency[cleanedWord] = 1;
}
}
}

var sortedWordFrequency = wordFrequency.OrderByDescending(x => x.Value).Take(5);

Console.WriteLine("Top 5 most frequent words:");
foreach (var pair in sortedWordFrequency)
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
}
}
```

In this program, we read the contents of a text file ("sample.txt") into a string and then split the text into individual words. We then use a dictionary to store the frequency of each word. Finally, we sort the dictionary by frequency and output the top 5 most frequent words along with their frequencies.