Экземпляр класса delgate, возвращающий информацию в основную форму - PullRequest
0 голосов
/ 29 января 2020

В настоящее время я использую твиттерную библиотеку tweeinvi для фильтрации твитов. У меня есть основная форма, которая создает, который создает экземпляр класса TwitterAuthentication. При создании конструктор обрабатывает процесс аутентификации. Затем из главной формы я создаю фильтр для слова hello и пытаюсь вернуть любые совпадения из этого отфильтрованного потока обратно в основную форму для входа в простое текстовое окно.

Итак, основные биты формы -

private void authenticate(object sender, EventArgs e)
    {
        TwitterAuthentication user = new TwitterAuthentication();
        twitter_user.Text = user.username();

        string UserTxt = user.ToString();


        user.set_filter(log_output_update);


    }
    public void log_output_update(string s) //int y)
    {
        {
            string z = "[def]";

            //if (y == 0) { z = "[SYS] "; }
            //if (y == 1) { z = "[IN] "; }
            //if (y == 2) { z = "[OUT] "; }
            //if (y == 3) { z = "[**ERROR**] It may be Phils Coding! Error - "; }

            string time = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

            //if (y == 0) { log_output_window.SelectionColor = Color.White; }
            //if (y == 1) { log_output_window.SelectionColor = Color.Blue; }
            //if (y == 2) { log_output_window.SelectionColor = Color.Green; }
            //if (y == 3) { log_output_window.SelectionColor = Color.Red; }

            log_output_window.AppendText(z + time + " " + s + System.Environment.NewLine);
            log_output_window.ScrollToCaret();
        }
    }

и полный класс (я пропустил учетные данные с помощью x) -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Diagnostics;
using System.Windows.Forms;
using Tweetinvi;
using Tweetinvi.Models;
using System.Drawing;


public class TwitterAuthentication
{
public delegate void Callback_Log_Tweet(string x);
public TwitterAuthentication()
{

    IAuthenticationContext _authContext;
    var appCredentials = new TwitterCredentials("x", "x");
    _authContext = AuthFlow.InitAuthentication(appCredentials);



    using (var client = new WebClient())
    {
        try
        {
            using (var Stream = client.OpenRead("http://www.google.com"))
            {
                Process.Start(_authContext.AuthorizationURL);

                //open pin box and enter pin
                SocialiFace_v2.PinAuth Pin = new SocialiFace_v2.PinAuth();
                Pin.ShowDialog();
                System.Console.WriteLine(Pin.Pin_Auth);
                var userCredentials = AuthFlow.CreateCredentialsFromVerifierCode(Pin.Pin_Auth, _authContext);
                Auth.SetCredentials(userCredentials);

                try
                {
                    var authenticateduser = User.GetAuthenticatedUser();
                    return;
                }
                catch (Tweetinvi.Exceptions.TwitterNullCredentialsException)
                {
                    MessageBox.Show("Error Authenticating");
                    return;
                }
            }
            //Callback_Log_Tweet("Logged In...."");

        }
        catch (Exception)
        {
            MessageBox.Show("Error Authenticating2");
            return;
        }

    }
}

public string username()
{
    try
    {
        var authenticateduser = User.GetAuthenticatedUser();
        string handle = authenticateduser.Name;
        return handle;
    }
    catch (Exception)
    {
        MessageBox.Show("Error getting username");
        return null;
    }
}

public void set_filter(Callback_Log_Tweet x)
{
    var stream = Stream.CreateFilteredStream();
    stream.AddTrack("Hello");
    stream.MatchingTweetReceived += (sender, args) =>
    {
        //Send back to delgate, and to print output delegate
       x("A tweet containing 'Hello' has been found; the tweet is '" + args.Tweet + "'");

    };
}

Любая помощь при передаче этого возврата будет будь великолепен! Кроме того, если я хочу, чтобы из класса передавался любой стандартный текст вне метода set_filter, как бы этого достичь?

заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...