C# .NET Framework 2.0での開発をしています。
で文字列に対してUTF-8文字コードでバイト数を取得し、その値が設定したバイト数上限を上回った場合に末尾の文字を上限を下回るまで削除する処理を実現したいと考えています。
以下のような手法を考えたのですが、文字列が大きさに比例してループの回数が多くなってしまうため、もっとc#の機能を利用した高速で安全な方法が無いかと検討しております。
良い方法等がございましたらご教示いただけませんでしょうか?
宜しくお願いいたします。

            string input = "バイト数制限処理をしたい文字列";
            UTF8Encoding utf8 = new UTF8Encoding(false ,true);
            int byteSize = utf8.GetByteCount(input);
            int maxByteSize = 15;
            string output = null;
            if (byteSize > maxByteSize)
            {
                int i = 1;
                while(true){
                    output = input.Substring(0, input.Length - i);
                    if (utf8.GetByteCount(output) < maxByteSize)
                    {
                        break;
                    }
                    i++;
                }
            }
            else
            {
                output = input;
            }
        }