我有一个我想要同时下载的页面的URL列表HttpClient.URL列表可能很大(100或更多!)
我目前有这个代码:
var urls = new List<string>
{
@"http:\\www.amazon.com",
@"http:\\www.bing.com",
@"http:\\www.facebook.com",
@"http:\\www.twitter.com",
@"http:\\www.google.com"
};
var client = new HttpClient();
var contents = urls
.ToObservable()
.SelectMany(uri => client.GetStringAsync(new Uri(uri, UriKind.Absolute)));
contents.Subscribe(Console.WriteLine);
Run Code Online (Sandbox Code Playgroud)
问题是:由于使用的原因SelectMany,几乎同时创建了大量的任务.似乎如果URL列表足够大,很多任务会给出超时(我得到"任务被取消"例外).
所以,我认为应该有一种方法,可能使用某种调度程序,来限制并发任务的数量,在给定时间不允许超过5或6.
通过这种方式,我可以获得并发下载而无需启动太多可能会失速的任务,就像他们现在所做的那样.
如何做到这一点,我不会因为大量的超时任务而饱和?
十分感谢.
我想知道如何单元测试序列Observable.Never.
我怎么能确定没有任何东西被推到序列中?
我有使用Entity Framework Core(v2)的查询,但是Include/ ThenInclude不能像我预期的那样工作.这是查询:
var titlesOwnedByUser = context.Users
.Where(u => u.UserId == userId)
.SelectMany(u => u.OwnedBooks)
.Select(b => b.TitleInformation)
.Include(ti => ti.Title)
.ThenInclude(n => n.Translations);
Run Code Online (Sandbox Code Playgroud)
该查询有效,但我得到的标题设置为标题null.
只是为了澄清这些课程
class User
{
public int Id { get; set; }
public List<BookUser> OwnedBooks { get; set; }
}
class Book
{
public int Id { get; set; }
public TitleInformation TitleInformation { get; set; }
public List<BookUser> Owners { get; set; }
}
class BookUser
{
public int …Run Code Online (Sandbox Code Playgroud) 我想为餐厅的菜单组合建模。我围绕 3 个概念创建了一个非常小的有界上下文:Menu, Category, Product.
菜单由不同的产品组成,每个菜单中的每个产品都放在某个类别下(例如,类别是“参赛者”、“第一道菜”、“第二道菜”、“甜点”……)。
问题是一切对我来说都像是一个实体。
例如,删除菜单时,不会删除任何产品或类别。其他 3 个概念也会发生同样的情况。
关于 UI,菜单将像层次结构一样被使用:
Menu1
Category1
Product1
Product2
Category2
Product3
Product4
Run Code Online (Sandbox Code Playgroud)
我想知道如何建模这个。我应该把它们做成 3 个聚合体吗?那么,应该如何编写菜单才能像上面的层次结构一样被消费?
谢谢。
我有这个界面
interface IMyInterface
{
object Create(Type t);
}
Run Code Online (Sandbox Code Playgroud)
为方便起见,我还会包含一个包含调用方法的泛型重载,因此它变为:
interface IMyInterface
{
object Create(Type t);
T Create<T>();
}
Run Code Online (Sandbox Code Playgroud)
新方法将像这样实现
public object Create<T>()
{
return (T) Create(typeof(T));
}
Run Code Online (Sandbox Code Playgroud)
方法的问题:
IMyInteface我该如何解决这个设计问题?
我想创建一个Observable,每秒都会持续推送一个值列表t.
例如,鉴于{1,2,3,4}订阅者应该得到这个:
1,2,3,4,1,2,3,4,1,2,3,4,1,2 ......
class Program
{
static void Main()
{
var observable = Observable
.Interval(TimeSpan.FromSeconds(3))
.Zip(Observable.Range(1, 4)
.Repeat(), (_, count) => count);
observable.Subscribe(Console.WriteLine);
Console.WriteLine("Finished!");
}
}
Run Code Online (Sandbox Code Playgroud)
我已经研究过这个例子,它似乎有效,但是有一个非常讨厌的问题:Main方法永远不会结束它的执行!为什么?:(
更糟糕的是,几分钟后,这个控制台应用程序抛出一个OutOfMemoryException!
我有一个包含3个步骤的流程管道:
它涉及2个一次性用品:视频捕获和zip文件.
我怎么能用Rx处理它?有任何想法吗?很抱歉没有发布任何代码,我不知道如何开始.
提前致谢!
我正在使用SSH.NET从C#中的控制台应用程序连接到我的Raspberry Pi。
我想从我自己的流中发送文本,并通过StreamWriter。
问题是它什么也不做。就像WriteLine("ls")不会产生任何效果。
这是代码:
using System;
using System.IO;
using Renci.SshNet;
namespace SSHTest
{
class Program
{
static void Main(string[] args)
{
var ssh = new SshClient("raspberrypi", 22, "pi", "raspberry");
ssh.Connect();
var input = new MemoryStream();
var streamWriter = new StreamWriter(input) { AutoFlush = true };
var shell =
ssh.CreateShell(input, Console.OpenStandardOutput(), new MemoryStream());
shell.Start();
streamWriter.WriteLine("ls");
while (true)
{
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么问题?
谢谢是提前:)
我有一个只有 3 个类的模型:User,Filter和FilterEntry.
class Filter
{
public List<FilterEntry> Inclusions { get; set; }
public List<FilterEntry> Exclusions { get; set; }
}
public class FilterEntry
{
public string Name { get; set; }
public int? Age { get; set; }
}
public class User
{
public string Name { get; set; }
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
一个Filter是被持久化到数据库过滤器,你可以看到它像一个过滤器的定义。它包含一个或多个FilterEntries定义过滤器。Inclusions 和 Exclusions 是适用于过滤器的限制。
一个例子:
var filter = new Filter
{ …Run Code Online (Sandbox Code Playgroud) 我创建了一个处理WPF中低级别磁盘操作的应用程序.我会考虑将其移植到UWP,但我认为这个平台是强沙盒的,不支持需要提升的操作(以管理员身份运行).
它甚至可能吗?
c# ×9
.net ×7
concurrency ×1
filter ×1
generics ×1
idisposable ×1
interface ×1
iqueryable ×1
observable ×1
ssh ×1
ssh.net ×1
stream ×1
uwp ×1
windows-10 ×1
ziparchive ×1