小编Jay*_*Jay的帖子

将JS回调函数传递给C#RT组件错误:"无法将类型为'mydb.SQLite3JSNoCallback'的对象强制转换为'mydb.SQLite3JSNoCallback'"

我有一个Javascript Windows 8应用程序.我正在使用C#编写WinRT组件DLL,以便与数据库连接.

对于所有函数,如OpenDB,ExecuteUpdate,ExecuteQuery(返回一行,返回一个列值),我已经完成了IASyncOperation并且非常成功.

但是为了逐个处理大结果集中的每一行,我需要将一个回调函数从javascript传递给C#WinRT组件DLL.所以代码就像,

My.WinRT.Component.Object.processEachRowASyc(query, arguments, function(row) {
    /* Row specific processing */
}).then(function(result) {
    /* Process after Entire Row processing is Complete */
});
Run Code Online (Sandbox Code Playgroud)

我写了这样的RT组件,

namespace mydb
{
    public void delegate MyJSCallback(string msg);
    public class Database {

        public static IAsyncOperation<Database> OpenDB(string dbFile)
        {
           /* Open DB */
        }

        public IAsyncOperation<Database> ProcessEachRowASync(string sql,[ReadOnlyArray()] object[] arg, MyJSCallback myJSCallback)
        {
            return Task<Database>.Run(() =>
            {
            /* Query Processing */
            IDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                string toRet = "{\"Name\":\"Raju\", \"Age\":\"21\"}";

                //Javascript …
Run Code Online (Sandbox Code Playgroud)

javascript c# callback windows-runtime

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

标签 统计

c# ×1

callback ×1

javascript ×1

windows-runtime ×1