diff --git a/Sample/LiveQueryApp/LiveQueryApp.csproj b/Sample/LiveQueryApp/LiveQueryApp.csproj
index c73e0d1..67089e1 100644
--- a/Sample/LiveQueryApp/LiveQueryApp.csproj
+++ b/Sample/LiveQueryApp/LiveQueryApp.csproj
@@ -3,6 +3,10 @@
Exe
netcoreapp3.1
+ 0.1.0
+
+
+
diff --git a/Sample/LiveQueryApp/Program.cs b/Sample/LiveQueryApp/Program.cs
index 2888d80..cc42aab 100644
--- a/Sample/LiveQueryApp/Program.cs
+++ b/Sample/LiveQueryApp/Program.cs
@@ -1,9 +1,69 @@
using System;
+using System.Threading.Tasks;
+using LeanCloud;
+using LeanCloud.Storage;
+using LeanCloud.LiveQuery;
+
+using static System.Console;
namespace LiveQueryApp {
class Program {
static void Main(string[] args) {
- Console.WriteLine("Hello World!");
+ WriteLine("Hello World!");
+
+ SingleThreadSynchronizationContext.Run(async () => {
+ LCLogger.LogDelegate += Print;
+ LCApplication.Initialize("ikGGdRE2YcVOemAaRbgp1xGJ-gzGzoHsz",
+ "NUKmuRbdAhg1vrb2wexYo1jo",
+ "https://ikggdre2.lc-cn-n1-shared.com");
+
+ await LCUser.Login("hello", "world");
+ LCQuery userQuery = LCUser.GetQuery();
+ userQuery.WhereEqualTo("username", "hello");
+ LCLiveQuery userLiveQuery = await userQuery.Subscribe();
+ userLiveQuery.OnLogin = (user) => {
+ WriteLine($"login: {user.Username}");
+ };
+
+ LCQuery query = new LCQuery("Account");
+ query.WhereGreaterThan("balance", 100);
+ LCLiveQuery liveQuery = await query.Subscribe();
+ liveQuery.OnCreate = (obj) => {
+ WriteLine($"create: {obj}");
+ };
+ liveQuery.OnUpdate = (obj, keys) => {
+ WriteLine($"update: {obj}");
+ WriteLine(keys.Count);
+ };
+ liveQuery.OnDelete = (objId) => {
+ WriteLine($"delete: {objId}");
+ };
+ liveQuery.OnEnter = (obj, keys) => {
+ WriteLine($"enter: {obj}");
+ WriteLine(keys.Count);
+ };
+ liveQuery.OnLeave = (obj, keys) => {
+ WriteLine($"leave: {obj}");
+ WriteLine(keys.Count);
+ };
+ });
+ }
+
+ private static void Print(LCLogLevel level, string info) {
+ switch (level) {
+ case LCLogLevel.Debug:
+ WriteLine($"[DEBUG] {info}\n");
+ break;
+ case LCLogLevel.Warn:
+ WriteLine($"[WARNING] {info}\n");
+ break;
+ case LCLogLevel.Error:
+ WriteLine($"[ERROR] {info}\n");
+ break;
+ default:
+ WriteLine(info);
+ break;
+ }
}
}
}
diff --git a/Sample/LiveQueryApp/SingleThreadSynchronizationContext.cs b/Sample/LiveQueryApp/SingleThreadSynchronizationContext.cs
index fdfb2c9..d881cca 100644
--- a/Sample/LiveQueryApp/SingleThreadSynchronizationContext.cs
+++ b/Sample/LiveQueryApp/SingleThreadSynchronizationContext.cs
@@ -4,7 +4,7 @@ using System.Threading.Tasks;
using System.Collections.Concurrent;
using System.Collections.Generic;
-namespace RealtimeApp {
+namespace LiveQueryApp {
///
/// 单线程环境,用于控制台应用 await 返回
///
diff --git a/Sample/RealtimeApp/RealtimeApp.csproj b/Sample/RealtimeApp/RealtimeApp.csproj
index d96ba13..a6a6535 100644
--- a/Sample/RealtimeApp/RealtimeApp.csproj
+++ b/Sample/RealtimeApp/RealtimeApp.csproj
@@ -3,6 +3,7 @@
Exe
netcoreapp3.0
+ 0.1.0
diff --git a/csharp-sdk.sln b/csharp-sdk.sln
index 4493742..205f883 100644
--- a/csharp-sdk.sln
+++ b/csharp-sdk.sln
@@ -27,6 +27,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Realtime", "Realtime\Realti
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RealtimeApp", "Sample\RealtimeApp\RealtimeApp.csproj", "{A716EFC7-9220-4A9A-9F73-B816A0787F77}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "LiveQuery", "LiveQuery", "{A1A24E0F-6901-4A9A-9BB8-4F586BC7EE17}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiveQuery", "LiveQuery\LiveQuery\LiveQuery.csproj", "{659BA438-1DA7-4A32-92A4-DD0FAE142259}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiveQuery.Test", "LiveQuery\LiveQuery.Test\LiveQuery.Test.csproj", "{7F770CE0-593E-486A-96E8-8903BC27C6FB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiveQueryApp", "Sample\LiveQueryApp\LiveQueryApp.csproj", "{CF72C053-5DB9-4E9C-BF9D-6664672F4916}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LiveQuery-Unity", "LiveQuery\LiveQuery-Unity\LiveQuery-Unity.csproj", "{FF11B077-93F1-45FD-A3C7-020D316EB5A4}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -69,6 +79,22 @@ Global
{A716EFC7-9220-4A9A-9F73-B816A0787F77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A716EFC7-9220-4A9A-9F73-B816A0787F77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A716EFC7-9220-4A9A-9F73-B816A0787F77}.Release|Any CPU.Build.0 = Release|Any CPU
+ {659BA438-1DA7-4A32-92A4-DD0FAE142259}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {659BA438-1DA7-4A32-92A4-DD0FAE142259}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {659BA438-1DA7-4A32-92A4-DD0FAE142259}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {659BA438-1DA7-4A32-92A4-DD0FAE142259}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7F770CE0-593E-486A-96E8-8903BC27C6FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7F770CE0-593E-486A-96E8-8903BC27C6FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7F770CE0-593E-486A-96E8-8903BC27C6FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7F770CE0-593E-486A-96E8-8903BC27C6FB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CF72C053-5DB9-4E9C-BF9D-6664672F4916}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CF72C053-5DB9-4E9C-BF9D-6664672F4916}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CF72C053-5DB9-4E9C-BF9D-6664672F4916}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CF72C053-5DB9-4E9C-BF9D-6664672F4916}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FF11B077-93F1-45FD-A3C7-020D316EB5A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FF11B077-93F1-45FD-A3C7-020D316EB5A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FF11B077-93F1-45FD-A3C7-020D316EB5A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FF11B077-93F1-45FD-A3C7-020D316EB5A4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{26CDAE2A-6D79-4981-8D80-3EA34FDFB134} = {319A9989-3B69-4AD0-9E43-F6D31C1D2A4A}
@@ -80,6 +106,10 @@ Global
{882A9419-CC5E-4CFB-B076-7561989B0A4A} = {319A9989-3B69-4AD0-9E43-F6D31C1D2A4A}
{75A3A4EC-93B8-40C9-AE04-DF14A72525CC} = {319A9989-3B69-4AD0-9E43-F6D31C1D2A4A}
{A716EFC7-9220-4A9A-9F73-B816A0787F77} = {2D980281-F060-4363-AB7A-D4B6C30ADDBB}
+ {659BA438-1DA7-4A32-92A4-DD0FAE142259} = {A1A24E0F-6901-4A9A-9BB8-4F586BC7EE17}
+ {7F770CE0-593E-486A-96E8-8903BC27C6FB} = {A1A24E0F-6901-4A9A-9BB8-4F586BC7EE17}
+ {CF72C053-5DB9-4E9C-BF9D-6664672F4916} = {2D980281-F060-4363-AB7A-D4B6C30ADDBB}
+ {FF11B077-93F1-45FD-A3C7-020D316EB5A4} = {A1A24E0F-6901-4A9A-9BB8-4F586BC7EE17}
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
version = 0.1.0