【问题标题】:Threading conversion between C# and VB.NETC# 和 VB.NET 之间的线程转换
【发布时间】:2014-06-15 22:36:15
【问题描述】:

我想将以下 C# 代码转换为 VB.NET

public byte[] TextToBytes(string textToSpeak)
{
    byte[] byteArr = null;

    var t = new System.Threading.Thread(() =>
    {
        SpeechSynthesizer ss = new SpeechSynthesizer();
        using (MemoryStream memoryStream = new MemoryStream())
        {
            ss.SetOutputToWaveStream(memoryStream);
            ss.Speak(textToSpeak);
            byteArr = memoryStream.ToArray();
        }
    });
    t.Start();
    t.Join();
    return byteArr;
}

我尝试了各种方法并使用了在线转换器,但即使是在线转换器也不确定如何处理 Thread 的事情。

有人可以伸出援助之手吗? 谢谢!

【问题讨论】:

  • 顺便说一句,那个线程完全没用。
  • @SLaks 我是从 SO 上的帖子中得到的。它被认为是保持 ASP.NET 网站响应的一种方式。
  • @tmighty 它开始然后阻塞调用者直到完成。在复制和粘贴代码之前,您可能应该了解线程。否则,您将陷入调试痛苦的世界。
  • @PierreOverFlow:您认为它有什么用处?

标签: c# vb.net migration


【解决方案1】:

C# 中的 () => 表示 lambda 表达式。在 VB 中,同样由Function()Sub() 表示,具体取决于是否返回值。

Dim t = New System.Threading.Thread(Sub()
    Dim ss As New SpeechSynthesizer()

    Using memoryStream As New MemoryStream()
        ss.SetOutputToWaveStream(memoryStream)
        ss.Speak(textToSpeak)
        byteArr = memoryStream.ToArray()
    End Using
End Sub)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多