我有一个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)