标签: asynchronous

启动AsyncTask时使TextView可见

我希望我的AsyncTask班级TextView从布局中更改a的可见性,但出现致命错误。如果我想获取的文本值TextView,它可以正常工作,但是在尝试设置可见性时会崩溃。

// Main Activity (MainActivity.java)
Context MainContext= getApplicationContext();
new MyAsyncTask((TextView)findViewById(R.id.my_text_view)).execute();

// My Async Task (MyAsyncTask.java)
public class MyAsyncTask extends AsyncTask <String, Void, String> {
    private Context context;
private TextView my_text_view;

public MyAsyncTask (TextView my_text_view){
        this.context = MainActivity.MainContext;
    this.txt_loading = my_text_view;
}

@Override
protected String doInBackground(String... params) {
    // TODO Auto-generated method stub
    my_text_view.setVisibility(View.VISIBLE); // crashes
    Log.i("Value: ", String.valueOf(this.my_text_view.getText())); // O.K.!
    return null;
}

@Override
    protected void onPostExecute(String result) {

    }

    @Override
    protected void onPreExecute() …
Run Code Online (Sandbox Code Playgroud)

android asynchronous task show textview

0
推荐指数
1
解决办法
1254
查看次数

RavenDB 2.x异步中的RegisterIdConvention

我正在尝试利用RavenDB的DocumentConvention API在我的域对象上自动设置增量ID.

我在IDocumentStore上使用这行代码完美地工作了:

DocumentStore.Conventions.RegisterIdConvention<User>
    ((dbname, commands, user) => "users/" + commands.NextIdentityFor("users"));
Run Code Online (Sandbox Code Playgroud)

每当我存储没有已设置ID的新User对象时,这将创建具有"users/1","users/2"等的用户对象的顺序ID .

但是,我想为Async文档会话执行此操作,但是在调用RegisterAsyncIdConvention()时无法找到有关如何从会话中获取"Next Identity"的任何文档...

docStore.Conventions.RegisterAsyncIdConvention<User>
    ((dbname, commands, user) => "users/" + commands.NextIdentityFor("users"));
Run Code Online (Sandbox Code Playgroud)

......不编译,因为NextIdentityFor不可用的IAsyncDatabaseCommands接口.

任何人都可以给我任何提示吗?还有人试过这个吗?

谢谢.

c# asynchronous ravendb

0
推荐指数
1
解决办法
366
查看次数

发送电子邮件异步

这是我尝试使用SendAsync()方法发送电子邮件.通过bool发送常规电子邮件时,它工作正常.使用SendAsync方法发送时没有骰子.如果你在这里看到错误,只是寻找一些提示.提前致谢.

private static void SendEmail(System.Net.Mail.MailMessage m, Boolean Async)
    {

    using (var smtpClient = new System.Net.Mail.SmtpClient(EmailList.SMTP_GOOGLE, 587))
            {
                smtpClient.EnableSsl = true;
                smtpClient.UseDefaultCredentials = false;
                smtpClient.Credentials = new NetworkCredential("email@domain.com","password");
                smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
                smtpClient.Timeout = 3000000;


                if (Async)
                {
                    object userState = m;
                    smtpClient.SendCompleted += new SendCompletedEventHandler(Smtp_OnComplete);
                    try
                    {
                        smtpClient.SendAsync(m, userState);
                    }
                    catch (Exception ex)
                    {
                            //Logging

                    }
                }
                else
                {
                    try
                    {
                        smtpClient.Send(m);
                    }
                    catch (Exception ex)
                        //Logging

                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

c# asp.net email asynchronous

0
推荐指数
1
解决办法
2628
查看次数

如何从nodejs中的另一个文件回调函数?

我开始使用异步编程,我正在创建一个nodejs应用程序,我在一些文件中切片代码:index.js,ctlUser.js,DAO.js等... .. Index.js是它需要的主文件ctlUser和ctlUser需要DAO.js ... DAO连接数据库并执行查询...

抽象,我的结构是这样的......

Index.js

var ctlUser =  require('./ctlUser.js');
var username = ctlUser.getUserName('1');
console.log("Return from ctlUser" + username);
Run Code Online (Sandbox Code Playgroud)

ctlUser.js

var DAO = require('./DAO.js');
var getUserName = function(id){
    var userName = DAO.executeQuery("SELECT username FROM tbUsers WHERE id = " + id );
    console.log(Return from DAO = userName);
    return username;
}
Run Code Online (Sandbox Code Playgroud)

DAO.js在这里一切都很好......

var mysql      = require('mysql'); 
var executeQuery = function(query) {    
        var connection = mysql.createConnection({
            host        : SERVER,
            user        : USER,
            password    : PASSWORD,
            database    : DATABASE
        });
        connection.connect();
        connection.query(query, …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous callback node.js

0
推荐指数
1
解决办法
4348
查看次数

什么是异步方法调用的优势?

仅使用.net套接字作为示例,我使用:

TcpListener listener = new TcpListener(ip, port);
while(true)
{
    TcpClient client = socket.AcceptTcpClient();
    DoSomethingWithClient(client);
}
Run Code Online (Sandbox Code Playgroud)

但另一种方式似乎是(基于http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.beginaccepttcpclient.aspx):

public static ManualResetEvent tcpClientConnected = new ManualResetEvent(false);

public static void DoBeginAcceptTcpClient(TcpListener listener)
{
    tcpClientConnected.Reset();
    listener.BeginAcceptTcpClient(new AsyncCallback(DoAcceptTcpClientCallback), listener);
    tcpClientConnected.WaitOne();
}

public static void DoAcceptTcpClientCallback(IAsyncResult ar) 
{
    TcpListener listener = (TcpListener) ar.AsyncState;
    TcpClient client = listener.EndAcceptTcpClient(ar);
    DoSomethingWithClient(client);
    tcpClientConnected.Set();
}
Run Code Online (Sandbox Code Playgroud)

恕我直言,异步风格需要3倍的代码,看起来像goto spaghetti - 它难以阅读,并迫使你分离出相关的代码.那你为什么要使用异步方式呢?据推测它必须有一些优势?

.net asynchronous

0
推荐指数
1
解决办法
568
查看次数

更复杂的延迟/承诺使用和链只是没有点击.希望得到一些澄清

我发现各种Deferred/promise库的文档通常涵盖非常简单的用例,例如链接1或2个函数/方法,并导致解决或拒绝成功或错误.

然而,当涉及到更复杂的用例(5个以上的函数/方法链;嵌套的Deferreds;从其他Deferreds中返回promise)时,我空手而归并变得非常沮丧.

比方说,我有一个包含2个嵌套函数的函数.每个子函数都返回一个promise,我希望父函数返回子函数的成功/失败结果:

var saveUser = function(user) {
    var saveNewUser = function(user) {
        var deferred = when.defer();

        user.save(function (err) {
            if (err) {
                deferred.reject();
            }
            else {
                // forcing a rejection here for testing purposes
                deferred.reject(6);
            }
        });

        return deferred.promise;
    }

    var supplyUserCollections = function() {
        var deferred = when.defer();

        deferred.reject();

        return deferred.promise;
    }

    return saveNewUser(user).then(supplyUserCollections(), function() {
        console.log('failed to save new user');
    }).then(function(data) {
        console.log('succeeded to do everything');
    }, function() {
        console.log('failed to seed new user collections');
    });
} …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js promise jquery-deferred

0
推荐指数
1
解决办法
828
查看次数

C#异步方法 - 需要帮助

我有一个消耗Web API操作的异步方法.它似乎陷入了一个循环.我的理由是因为如果我在catch块的第1行放置一个断点,并且进入,它实际上从未击中第二行.

我最初返回一个包含100,000+(~30mb)行的数据集,并认为由于请求的大小,它可能会很慢,但在更改我的Web API操作以仅返回1行后问题仍然存在.当我浏览到Web API解决方案的URI时,肯定会返回数据,我在浏览器中返回了JSON.

public async Task<IEnumerable<Document>> GetAll()
{
    try
    {
        var response = await _client.GetAsync(
                       string.Format("{0}/api/document", _baseURI));

        // never hits line below
        return await response.Content.ReadAsAsync<Document>() 
                   as IEnumerable<Document>;
    }
    catch (Exception ex)
    {
        // handle exception
    }
}
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里遗失了什么?一些帮助将不胜感激.

编辑1

在回答一些问题时,我有一个由MVC项目引用的Web API项目.我必须对JSON反序列化的原始问题进行一些更改.

库:

public async Task<IEnumerable<Document>> GetAll()
{
    try
    {
        string json;
        var response = await _client.GetAsync(string.Format(
                       "{0}/api/document", _baseURI)).ConfigureAwait(false);

        var resource = await response.Content.ReadAsAsync<Document>();

        using(var reader = new StreamReader(resource.ToString()))
        {
            json = reader.ReadToEndAsync().ToString();
        }

        return JsonConvert.DeserializeObjectAsync<Document>(json) 
                       as IEnumerable<Document>;
        } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asynchronous async-await asp.net-web-api

0
推荐指数
1
解决办法
2210
查看次数

在类构造C#之后运行异步操作

我创建了一个锁对象包装器(类),它使用semaphoreSlim(1)作为我的管理器(类)操作的锁机制.
我的经理类包含一个锁,我在构造新的包装类时发送,然后我在这个包装类锁上使用Await(实际上等待我在构造时发送它的锁).并在Dispose上释放它(包装类的目的是自动锁定和释放,锁定构造,并在处置时释放).

我将这种模式用于我构建的新锁包装:

//_syncLock is a class that used as member lock to use in my operations as async lock.
using (OperationSyncLockWrapper syncLock = new OperationSyncLockWrapper(_syncLock))
{
    await syncLock.Wait(); //I wish to avoid this line and run it automatically
    await SomeAsyncOperation(parameter1);
}  
Run Code Online (Sandbox Code Playgroud)

因为我不能在构造函数方法中使用async/await.还有另一种方法可以等待我刚创建的新对象 - 在类构造上还是之后?

c# asynchronous async-await

0
推荐指数
1
解决办法
360
查看次数

使用Task加载数据仍会挂起UI

我有一个带有几个选项卡的WPF表单.当我加载表单时,我也尝试在后台加载一些数据选项卡.

代码如下所示:

public static List<MyModel> GetCaseNotes(int someId)
{
   return GetCaseNotesAsync(debtorId).Result;
}

public static async Task<List<MyModel>> GetCaseNotesAsync(int someId)
{
     Task<List<MyModel>> tsk = Task.Run(() => GetCaseNotesFromDb(someId));


     return await tsk.ConfigureAwait(false);

}

public static List<MyModel> GetCaseNotesFromDb(int debtorId)
{

   //get some data from database
}
Run Code Online (Sandbox Code Playgroud)

但是,UI仍在等待从数据库中获取数据......有什么想法吗?

c# asynchronous async-await

0
推荐指数
1
解决办法
533
查看次数

我没有得到node.js的库异步,我错了?

我尝试了很多在nodejs中使用aync库,但我最简单的测试甚至不起作用.

var async = require('async');

var i = 0 ;

var inc = function(){
    i++;
} ;

var show = function(){
    console.log(i) ;
} ;

var err = function(err){
    console.log(err) ;
} ;

async.forever(inc,err) ;
async.forever(show,err) ;
Run Code Online (Sandbox Code Playgroud)

函数根本不循环,输出只是

1
Run Code Online (Sandbox Code Playgroud)

请问我做错了什么.

asynchronous node.js

0
推荐指数
1
解决办法
760
查看次数