首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用c#启动Help First安卓应用

问使用c#启动Help First安卓应用
EN

Stack Overflow用户
提问于 2016-02-29 23:07:29
回答 1查看 52关注 0票数 0

我正在尝试使用VS Community 2015在c#中编写一个android应用程序,该应用程序应该向websocket发送一条消息,显示它收到的答案。

这是我的MainActivity.cs

代码语言:javascript
复制
public class MainActivity : Activity
{


    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);

        // Get our button from the layout resource,
        // and attach an event to it
        Button button = FindViewById<Button>(Resource.Id.MyButton);
        TextView t1 = FindViewById<TextView>(Resource.Id.textView1);

        button.Click += delegate
        {
            string msg = SetStatusText();
            t1.SetText(msg,TextView.BufferType.Normal);
        };

    }

    private string SetStatusText()
    {
        Connector c = new Connector();
        c.Connect();
        return c.msg;

    }
}

连接器是这样的

代码语言:javascript
复制
class Connector
{
    public string msg { get; set; }

    WebSocket websocket = new WebSocket("ws://192.168.1.103:2012/");
    public void Connect()
    {
        websocket.Opened += new EventHandler(websocket_Opened);
        websocket.MessageReceived += new EventHandler<MessageReceivedEventArgs>(websocket_MessageReceived);
        websocket.Open();
    }

    private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
    {
        msg = e.Message;
    }

    private void websocket_Opened(object sender, EventArgs e)
    {
        websocket.Send("Status");
    }   


}

在调试模式下,我在连接器的msg变量中看到websocket返回的消息,但我将其返回给MainActivity的方式不起作用。它保持为空。

EN

回答 1

Stack Overflow用户

发布于 2016-02-29 23:12:33

你刚连接到WebSocket就使用了"msg“变量,这将会失败,因为你仍然没有收到消息,你需要以某种方式等待websocket_MessageReceived被执行。

如果你想等到收到消息,你可以使用一个事件:

代码语言:javascript
复制
class Connector
{
    public string msg { get; set; }
    public event EventHandler MessageReceived;

    WebSocket websocket = new WebSocket("ws://192.168.1.103:2012/");
    public void Connect()
    {
        websocket.Opened += new EventHandler(websocket_Opened);
        websocket.MessageReceived += new EventHandler<MessageReceivedEventArgs>(websocket_MessageReceived);
        websocket.Open();
    }

    private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
    {
        msg = e.Message;
        if(MessageReceived != null)
            MessageReceived(this, EventArgs.Empty);
    }

    private void websocket_Opened(object sender, EventArgs e)
    {
        websocket.Send("Status");
    }   
}

然后,在创建连接时,您可以执行以下操作:

代码语言:javascript
复制
c.MessageReceived += (o,e) => t1.SetText(c.msg,TextView.BufferType.Normal);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35702883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档